{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Demo for ISPC.jl\n",
    "\n",
    "Runs the Mandelbrot ISPC example entirely from Julia code."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Linker: /usr/bin/libtool\n"
     ]
    }
   ],
   "source": [
    "using ISPC"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This is the function we will call for every pixel. Declare it `@inline` so that the `@kernel` below can use it."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "mandel (generic function with 1 method)"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@inline function mandel(c_re, c_im, count)\n",
    "    z_re = c_re\n",
    "    z_im = c_im\n",
    "    i = 0\n",
    "    while i < count\n",
    "        if (z_re * z_re + z_im * z_im > 4.0f0)\n",
    "            break\n",
    "        end\n",
    "        new_re = z_re*z_re - z_im*z_im\n",
    "        new_im = 2.0f0 * z_re * z_im\n",
    "        z_re = c_re + new_re\n",
    "        z_im = c_im + new_im\n",
    "        i += 1\n",
    "    end\n",
    "    return i\n",
    "end"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This is the main function. Tag it with `@ispc` so that all kernel fragments inside are extracted and compiled separately by ISPC."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false,
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Extracted kernel Val{symbol(\"##8014\")}((:x0,:y0,:output,:max_iters,:height,:width,:dx,:dy))\n",
      "begin \n",
      "    GenSym(3) = (Main.colon)(1,width)\n",
      "    #s40 = (top(start))(GenSym(3))\n",
      "    unless (top(!))((top(done))(GenSym(3),#s40)) goto 1\n",
      "    2: \n",
      "    GenSym(4) = (top(next))(GenSym(3),#s40)\n",
      "    i = (top(getfield))(GenSym(4),1)\n",
      "    #s40 = (top(getfield))(GenSym(4),2)\n",
      "    $(Expr(:meta, :ispc, symbol(\"##foreach#8022\"), :foreach, (:(1:height),)))\n",
      "    j = (ISPC.foreachindex)(1,(Main.colon)(1,height))\n",
      "    x = ((top(getfield))(Base.FastMath,:add_fast))(x0,((top(getfield))(Base.FastMath,:mul_fast))(i,dx))\n",
      "    y = ((top(getfield))(Base.FastMath,:add_fast))(y0,((top(getfield))(Base.FastMath,:mul_fast))(j,dy))\n",
      "    GenSym(5) = (Main.mandel)(x,y,max_iters)\n",
      "    (Main.setindex!)(output,GenSym(5),j,i)\n",
      "    $(Expr(:meta, :ispc, symbol(\"##foreach#8022\")))\n",
      "    3: \n",
      "    unless (top(!))((top(!))((top(done))(GenSym(3),#s40))) goto 2\n",
      "    1: \n",
      "    0: \n",
      "    return\n",
      "end\n"
     ]
    }
   ],
   "source": [
    "@ispc function mandelbrot_ispc(x0, y0, x1, y1, output, max_iters)\n",
    "    height, width = size(output)\n",
    "    dx = (x1 - x0) / width\n",
    "    dy = (y1 - y0) / height\n",
    "    @kernel(`--target=avx1-i32x8`) do\n",
    "        for i = 1:width\n",
    "            @foreach(1:height) do j\n",
    "                x = x0 + i * dx\n",
    "                y = y0 + j * dy\n",
    "                output[j,i] = mandel(x, y, max_iters)\n",
    "            end\n",
    "        end\n",
    "    end\n",
    "    output\n",
    "end;"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "output = zeros(Float32, 768, 1024);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Check that kernel fragments in the main Julia function have been replaced by kernel calls:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1-element Array{Any,1}:\n",
       " :($(Expr(:lambda, Any[:x0,:y0,:x1,:y1,:output,:max_iters], Any[Any[Any[:x0,:Any,1],Any[:y0,:Any,1],Any[:x1,:Any,0],Any[:y1,:Any,0],Any[:output,:Any,1],Any[:max_iters,:Any,1],Any[:height,:Any,19],Any[:width,:Any,19],Any[symbol(\"#s41\"),:Any,2],Any[:dx,:Any,19],Any[:dy,:Any,19]],Any[],6,Any[]], :(begin  # In[3], line 2:\n",
       "        NewvarNode(:height)\n",
       "        NewvarNode(:width)\n",
       "        NewvarNode(:dx)\n",
       "        NewvarNode(:dy)\n",
       "        GenSym(0) = (Main.size)(output)\n",
       "        #s41 = (top(start))(GenSym(0))\n",
       "        GenSym(1) = (top(indexed_next))(GenSym(0),1,#s41)\n",
       "        height = (top(getfield))(GenSym(1),1)\n",
       "        #s41 = (top(getfield))(GenSym(1),2)\n",
       "        GenSym(2) = (top(indexed_next))(GenSym(0),2,#s41)\n",
       "        width = (top(getfield))(GenSym(2),1)\n",
       "        #s41 = (top(getfield))(GenSym(2),2) # In[3], line 3:\n",
       "        dx = (x1 - x0) / width # In[3], line 4:\n",
       "        dy = (y1 - y0) / height # In[3], line 5: # /Users/plantagenet/.julia/v0.5/ISPC.jl/src/macros.jl, line 141:\n",
       "        ((top(getfield))(ISPC,:kernel_call))(Val{symbol(\"##8014\")},x0,y0,output,max_iters,height,width,dx,dy) # In[3], line 14:\n",
       "        return output\n",
       "    end))))"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@code_lowered mandelbrot_ispc(-2.0f0, -1.0f0, 1.0f0, 1.0f0, output, 256)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Calling the main function the first time will trigger the compilation of all its fragments:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false,
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Generating kernel ##8014 for argument types (Float32,Float32,Array{Float32,2},Int64,Int64,Int64,Float32,Float32)\n",
      "Compile options: `--target=avx1-i32x8`\n",
      "Running type inference...\n",
      "Lambda function:\n",
      "\t arguments: Any[:x0,:y0,:output,:max_iters,:height,:width,:dx,:dy]\n",
      "\t local variables: \n",
      "\t\t(symbol(\"#s40\"),Int64,2)\n",
      "\t\t(:i,Int64,18)\n",
      "\t\t(:j,Int64,18)\n",
      "\t\t(:x,Float32,18)\n",
      "\t\t(:y,Float32,18)\n",
      "\t\t(:x0,Float32,0)\n",
      "\t\t(:y0,Float32,0)\n",
      "\t\t(:output,Array{Float32,2},0)\n",
      "\t\t(:max_iters,Int64,0)\n",
      "\t\t(:height,Int64,18)\n",
      "\t\t(:width,Int64,18)\n",
      "\t\t(:dx,Float32,18)\n",
      "\t\t(:dy,Float32,18)\n",
      "\t\t(symbol(\"##zs#8510\"),Tuple{},0)\n",
      "\t\t(symbol(\"##zs#8511\"),Tuple{},0)\n",
      "\t\t(symbol(\"##z_re#8512\"),Float32,2)\n",
      "\t\t(symbol(\"##z_im#8513\"),Float32,2)\n",
      "\t\t(symbol(\"##i#8514\"),Int64,2)\n",
      "\t\t(symbol(\"##new_re#8515\"),Float32,18)\n",
      "\t\t(symbol(\"##new_im#8516\"),Float32,18)\n",
      "\t\t(symbol(\"####xs#8509#8517\"),Tuple{},0)\n",
      "\t\t(symbol(\"##I#8518\"),Tuple{},0)\n",
      "\t closure variables: \n",
      "\n",
      "\t SSA types: Any[Union{},Union{},Union{},UnitRange{Int64},Tuple{Int64,Int64},Int64,Int64,Int64]\n",
      "\t parameters: Any[]\n",
      "begin \n",
      "    GenSym(3) = $(Expr(:new, UnitRange{Int64}, 1, :(((top(getfield))(Base.Intrinsics,:select_value))((Base.sle_int)(1,width::Int64),width::Int64,(Base.sub_int)(1,1)))))\n",
      "    #s40 = (top(getfield))(GenSym(3),:start)\n",
      "    unless (Base.not_int)(#s40::Int64 === (Base.add_int)((top(getfield))(GenSym(3),:stop),1)) goto 1\n",
      "    2: \n",
      "    GenSym(6) = #s40::Int64\n",
      "    GenSym(7) = (Base.add_int)(#s40::Int64,1)\n",
      "    i = GenSym(6)\n",
      "    #s40 = GenSym(7)\n",
      "    $(Expr(:meta, :ispc, symbol(\"##foreach#8022\"), :foreach, (:(1:height),)))\n",
      "    j = (ISPC.foreachindex)(1,$(Expr(:new, UnitRange{Int64}, 1, :(((top(getfield))(Base.Intrinsics,:select_value))((Base.sle_int)(1,height::Int64),height::Int64,(Base.sub_int)(1,1))))))\n",
      "    x = (Base.FastMath.box)(Float32,((top(getfield))(Base.FastMath.Base,:add_float_fast))(x0::Float32,(Base.FastMath.box)(Float32,((top(getfield))(Base.FastMath.Base,:mul_float_fast))((Base.sitofp)(Float32,i::Int64),dx::Float32))))\n",
      "    y = (Base.FastMath.box)(Float32,((top(getfield))(Base.FastMath.Base,:add_float_fast))(y0::Float32,(Base.FastMath.box)(Float32,((top(getfield))(Base.FastMath.Base,:mul_float_fast))((Base.sitofp)(Float32,j::Int64),dy::Float32))))\n",
      "    ##z_re#8512 = x::Float32\n",
      "    ##z_im#8513 = y::Float32\n",
      "    ##i#8514 = 0\n",
      "    NewvarNode(symbol(\"##new_re#8515\"))\n",
      "    NewvarNode(symbol(\"##new_im#8516\"))\n",
      "    unless (Base.slt_int)(##i#8514::Int64,max_iters::Int64) goto 18\n",
      "    15: \n",
      "    unless (Base.lt_float)(4.0f0,(Base.add_float)((Base.mul_float)(##z_re#8512::Float32,##z_re#8512::Float32),(Base.mul_float)(##z_im#8513::Float32,##z_im#8513::Float32))) goto 16\n",
      "    goto 19\n",
      "    16: \n",
      "    ##new_re#8515 = (Base.sub_float)((Base.mul_float)(##z_re#8512::Float32,##z_re#8512::Float32),(Base.mul_float)(##z_im#8513::Float32,##z_im#8513::Float32))\n",
      "    ##new_im#8516 = (Base.mul_float)((Base.mul_float)(2.0f0,##z_re#8512::Float32),##z_im#8513::Float32)\n",
      "    ##z_re#8512 = (Base.add_float)(x::Float32,##new_re#8515::Float32)\n",
      "    ##z_im#8513 = (Base.add_float)(y::Float32,##new_im#8516::Float32)\n",
      "    ##i#8514 = (Base.add_int)(##i#8514::Int64,1)\n",
      "    17: \n",
      "    unless (Base.not_int)((Base.slt_int)(##i#8514::Int64,max_iters::Int64)) goto 15\n",
      "    18: \n",
      "    19: \n",
      "    GenSym(5) = ##i#8514::Int64\n",
      "    (Base.arrayset)(output::Array{Float32,2},(Base.sitofp)(Float32,GenSym(5)),j::Int64,i::Int64)\n",
      "    $(Expr(:meta, :ispc, symbol(\"##foreach#8022\")))\n",
      "    3: \n",
      "    unless (Base.not_int)((Base.not_int)(#s40::Int64 === (Base.add_int)((top(getfield))(GenSym(3),:stop),1))) goto 2\n",
      "    1: \n",
      "    0: \n",
      "    return\n",
      "end\n",
      "@generated function kernel_call{##8014}(::Type{Val{##8014}}, args...)\n",
      "begin \n",
      "    $(Expr(:meta, :inline))\n",
      "    @inbounds begin \n",
      "            if UInt(ISPC.ispc_fptr[1]) == 0\n",
      "                ISPC.compile_all()\n",
      "                if UInt(ISPC.ispc_fptr[1]) == 0\n",
      "                    error(\"Could not compile ISPC kernel $(id)\")\n",
      "                end\n",
      "            end\n",
      "            begin \n",
      "                ccall(ISPC.ispc_fptr[1],Void,(Float32,Float32,Ref{Float32},Int64,Int64,Int64,Int64,Int64,Float32,Float32),args[1],args[2],args[3],size(args[3],1),size(args[3],2),args[4],args[5],args[6],args[7],args[8])\n",
      "            end\n",
      "        end\n",
      "end\n",
      "Compiling ISPC file...\n",
      "// Use ISPC's multiple dispatch capabilities to deal with the fact\n",
      "// that Julia uses the same function for bitwise and boolean NOT,\n",
      "// whereas the ~ operator in ISPC does not work on booleans:\n",
      "inline bool __not(bool val) {return !val;} // boolean NOT\n",
      "inline int8 __not(int8 val) {return ~val;} // all others are bitwise\n",
      "inline int16 __not(int16 val) {return ~val;}\n",
      "inline int32 __not(int32 val) {return ~val;}\n",
      "inline int64 __not(int64 val) {return ~val;}\n",
      "inline unsigned int8 __not(unsigned int8 val) {return ~val;}\n",
      "inline unsigned int16 __not(unsigned int16 val) {return ~val;}\n",
      "inline unsigned int32 __not(unsigned int32 val) {return ~val;}\n",
      "inline unsigned int64 __not(unsigned int64 val) {return ~val;}\n",
      "\n",
      "\n",
      "struct UnitRange {\n",
      "    int64 start;\n",
      "    int64 stop;\n",
      "};\n",
      "export void ispc_func_1(uniform float x0, uniform float y0, uniform float output[], uniform int64 output__len__1, uniform int64 output__len__2, uniform int64 max_iters, uniform int64 height, uniform int64 width, uniform float dx, uniform float dy) {\n",
      "    uniform UnitRange _gensym3 = {1, ((1 <= width) ? width : (1 - 1))};\n",
      "    uniform int64 _s40 = _gensym3.start;\n",
      "    while(__not((_s40 == (_gensym3.stop + 1)))) {\n",
      "        uniform int64 _gensym6 = _s40;\n",
      "        uniform int64 _gensym7 = (_s40 + 1);\n",
      "        uniform int64 i = _gensym6;\n",
      "        _s40 = _gensym7;\n",
      "        foreach(j = 1 ... (height+1)) {\n",
      "            float x = (x0 + (((float)i) * dx));\n",
      "            float y = (y0 + (((float)j) * dy));\n",
      "            float __z_re_8512 = x;\n",
      "            float __z_im_8513 = y;\n",
      "            int64 __i_8514 = 0;\n",
      "            float __new_re_8515;\n",
      "            float __new_im_8516;\n",
      "            while((__i_8514 < max_iters)) {\n",
      "                if ((0x1p+2 < ((__z_re_8512 * __z_re_8512) + (__z_im_8513 * __z_im_8513)))) {\n",
      "                    break;\n",
      "                } else {\n",
      "                    __new_re_8515 = ((__z_re_8512 * __z_re_8512) - (__z_im_8513 * __z_im_8513));\n",
      "                    __new_im_8516 = ((0x1p+1 * __z_re_8512) * __z_im_8513);\n",
      "                    __z_re_8512 = (x + __new_re_8515);\n",
      "                    __z_im_8513 = (y + __new_im_8516);\n",
      "                    __i_8514 = (__i_8514 + 1);\n",
      "                }\n",
      "            }\n",
      "            int64 _gensym5 = __i_8514;\n",
      "            output[((j - 1) + (output__len__1 * (i - 1)))] = ((float)_gensym5);\n",
      "        }\n",
      "    }\n",
      "    return;\n",
      "}\n",
      "\n",
      "\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "ld: warning: -macosx_version_min not specified, assuming 10.10\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Loaded function ispc_func_1 at Ptr{Void} @0x000000030ec987c0\n"
     ]
    }
   ],
   "source": [
    "mandelbrot_ispc(-2.0f0, -1.0f0, 1.0f0, 1.0f0, output, 256);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now let's call it again to get an accurate measure of execution time:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  0.091577 seconds (15 allocations: 352 bytes)\n"
     ]
    }
   ],
   "source": [
    "x0, x1 = -2.1f0, 0.8f0\n",
    "y0, y1 = -1.2f0, 1.2f0\n",
    "@time out = mandelbrot_ispc(x0, y0, x1, y1, output, 256);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Plot the generated fractal:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "using PyPlot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "PyPlot.Figure(PyObject <matplotlib.figure.Figure object at 0x319ebf710>)"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "imshow(out, cmap=\"flag\", aspect=\"equal\", extent=(x0, x1, y0, y1))\n",
    "display(gcf())\n",
    "close()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Wow, nice!"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Pure-Julia version for comparison. Note how it uses the same `mandel()` routine as the ISPC version. We can't use `@simd` here because of the branch statements."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "mandelbrot_julia (generic function with 1 method)"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@fastmath function mandelbrot_julia(x0, y0, x1, y1, output, max_iters)\n",
    "    height, width = size(output)\n",
    "    dx = (x1 - x0) / width\n",
    "    dy = (y1 - y0) / height\n",
    "    @inbounds begin\n",
    "        for i = 1:width\n",
    "            for j = 1:height\n",
    "                x = x0 + i * dx\n",
    "                y = y0 + j * dy\n",
    "                output[j, i] = mandel(x, y, max_iters)\n",
    "            end\n",
    "        end\n",
    "    end\n",
    "    output\n",
    "end"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "How fast does it run?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  0.233861 seconds (4 allocations: 160 bytes)\n"
     ]
    }
   ],
   "source": [
    "@time out = mandelbrot_julia(x0, y0, x1, y1, output, 256);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Not bad, only about 2.5x to 3x slower. But we got a decent speedup from ISPC!"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's look at the generated C code, x86 assembly and LLVM assembly."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "func = ISPC.ispc_funcs[1];"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "collapsed": false,
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "// Use ISPC's multiple dispatch capabilities to deal with the fact\n",
      "// that Julia uses the same function for bitwise and boolean NOT,\n",
      "// whereas the ~ operator in ISPC does not work on booleans:\n",
      "inline bool __not(bool val) {return !val;} // boolean NOT\n",
      "inline int8 __not(int8 val) {return ~val;} // all others are bitwise\n",
      "inline int16 __not(int16 val) {return ~val;}\n",
      "inline int32 __not(int32 val) {return ~val;}\n",
      "inline int64 __not(int64 val) {return ~val;}\n",
      "inline unsigned int8 __not(unsigned int8 val) {return ~val;}\n",
      "inline unsigned int16 __not(unsigned int16 val) {return ~val;}\n",
      "inline unsigned int32 __not(unsigned int32 val) {return ~val;}\n",
      "inline unsigned int64 __not(unsigned int64 val) {return ~val;}\n",
      "\n",
      "\n",
      "struct UnitRange {\n",
      "    int64 start;\n",
      "    int64 stop;\n",
      "};\n",
      "export void ispc_func_1(uniform float x0, uniform float y0, uniform float output[], uniform int64 output__len__1, uniform int64 output__len__2, uniform int64 max_iters, uniform int64 height, uniform int64 width, uniform float dx, uniform float dy) {\n",
      "    uniform UnitRange _gensym3 = {1, ((1 <= width) ? width : (1 - 1))};\n",
      "    uniform int64 _s40 = _gensym3.start;\n",
      "    while(__not((_s40 == (_gensym3.stop + 1)))) {\n",
      "        uniform int64 _gensym6 = _s40;\n",
      "        uniform int64 _gensym7 = (_s40 + 1);\n",
      "        uniform int64 i = _gensym6;\n",
      "        _s40 = _gensym7;\n",
      "        foreach(j = 1 ... (height+1)) {\n",
      "            float x = (x0 + (((float)i) * dx));\n",
      "            float y = (y0 + (((float)j) * dy));\n",
      "            float __z_re_8512 = x;\n",
      "            float __z_im_8513 = y;\n",
      "            int64 __i_8514 = 0;\n",
      "            float __new_re_8515;\n",
      "            float __new_im_8516;\n",
      "            while((__i_8514 < max_iters)) {\n",
      "                if ((0x1p+2 < ((__z_re_8512 * __z_re_8512) + (__z_im_8513 * __z_im_8513)))) {\n",
      "                    break;\n",
      "                } else {\n",
      "                    __new_re_8515 = ((__z_re_8512 * __z_re_8512) - (__z_im_8513 * __z_im_8513));\n",
      "                    __new_im_8516 = ((0x1p+1 * __z_re_8512) * __z_im_8513);\n",
      "                    __z_re_8512 = (x + __new_re_8515);\n",
      "                    __z_im_8513 = (y + __new_im_8516);\n",
      "                    __i_8514 = (__i_8514 + 1);\n",
      "                }\n",
      "            }\n",
      "            int64 _gensym5 = __i_8514;\n",
      "            output[((j - 1) + (output__len__1 * (i - 1)))] = ((float)_gensym5);\n",
      "        }\n",
      "    }\n",
      "    return;\n",
      "}\n",
      "\n",
      "\n",
      "\n"
     ]
    }
   ],
   "source": [
    "func_code = ISPC.gen_code(func)\n",
    "println(func_code)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "collapsed": false,
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\t.section\t__TEXT,__text,regular,pure_instructions\n",
      "\t.macosx_version_min 13, 4\n",
      "\t.section\t__TEXT,__literal16,16byte_literals\n",
      "\t.align\t4\n",
      "LCPI0_0:\n",
      "\t.long\t0                       ## 0x0\n",
      "\t.long\t1                       ## 0x1\n",
      "\t.long\t2                       ## 0x2\n",
      "\t.long\t3                       ## 0x3\n",
      "LCPI0_1:\n",
      "\t.long\t4                       ## 0x4\n",
      "\t.long\t5                       ## 0x5\n",
      "\t.long\t6                       ## 0x6\n",
      "\t.long\t7                       ## 0x7\n",
      "LCPI0_2:\n",
      "\t.byte\t0                       ## 0x0\n",
      "\t.byte\t1                       ## 0x1\n",
      "\t.byte\t4                       ## 0x4\n",
      "\t.byte\t5                       ## 0x5\n",
      "\t.byte\t8                       ## 0x8\n",
      "\t.byte\t9                       ## 0x9\n",
      "\t.byte\t12                      ## 0xc\n",
      "\t.byte\t13                      ## 0xd\n",
      "\t.byte\t8                       ## 0x8\n",
      "\t.byte\t9                       ## 0x9\n",
      "\t.byte\t12                      ## 0xc\n",
      "\t.byte\t13                      ## 0xd\n",
      "\t.byte\t12                      ## 0xc\n",
      "\t.byte\t13                      ## 0xd\n",
      "\t.byte\t14                      ## 0xe\n",
      "\t.byte\t15                      ## 0xf\n",
      "LCPI0_4:\n",
      "\t.quad\t1                       ## 0x1\n",
      "\t.quad\t1                       ## 0x1\n",
      "\t.section\t__TEXT,__const\n",
      "\t.align\t5\n",
      "LCPI0_3:\n",
      "\t.long\t1082130432              ## float 4.000000e+00\n",
      "\t.long\t1082130432              ## float 4.000000e+00\n",
      "\t.long\t1082130432              ## float 4.000000e+00\n",
      "\t.long\t1082130432              ## float 4.000000e+00\n",
      "\t.long\t1082130432              ## float 4.000000e+00\n",
      "\t.long\t1082130432              ## float 4.000000e+00\n",
      "\t.long\t1082130432              ## float 4.000000e+00\n",
      "\t.long\t1082130432              ## float 4.000000e+00\n",
      "LCPI0_5:\n",
      "\t.space\t32\n",
      "\t.section\t__TEXT,__text,regular,pure_instructions\n",
      "\t.globl\t_ispc_func_1___unfunfun_3C_unf_3E_unIunIunIunIunIunfunf\n",
      "\t.align\t4, 0x90\n",
      "_ispc_func_1___unfunfun_3C_unf_3E_unIunIunIunIunIunfunf: ## @ispc_func_1___unfunfun_3C_unf_3E_unIunIunIunIunIunfunf\n",
      "## BB#0:                                ## %allocas\n",
      "\tpushq\t%rbp\n",
      "\tpushq\t%r15\n",
      "\tpushq\t%r14\n",
      "\tpushq\t%rbx\n",
      "\tsubq\t$408, %rsp              ## imm = 0x198\n",
      "\tvmovups\t%ymm4, (%rsp)           ## 32-byte Spill\n",
      "\tvmovss\t%xmm2, 60(%rsp)         ## 4-byte Spill\n",
      "\tvmovss\t%xmm0, 56(%rsp)         ## 4-byte Spill\n",
      "\tvmovmskps\t%ymm4, %edx\n",
      "\tleaq\t1(%r9), %r10\n",
      "\ttestq\t%r9, %r9\n",
      "\tmovl\t$1, %r14d\n",
      "\tcmovleq\t%r14, %r10\n",
      "\tleal\t1(%r8), %r11d\n",
      "\tmovl\t%r8d, %eax\n",
      "\tsarl\t$31, %eax\n",
      "\tshrl\t$29, %eax\n",
      "\taddl\t%r8d, %eax\n",
      "\tandl\t$-8, %eax\n",
      "\tmovl\t%r8d, %ebx\n",
      "\tsubl\t%eax, %ebx\n",
      "\tnegl\t%ebx\n",
      "\tleal\t1(%r8,%rbx), %eax\n",
      "\tvpermilps\t$0, %xmm1, %xmm0 ## xmm0 = xmm1[0,0,0,0]\n",
      "\tvinsertf128\t$1, %xmm0, %ymm0, %ymm0\n",
      "\tvmovups\t%ymm0, 160(%rsp)        ## 32-byte Spill\n",
      "\tvpermilps\t$0, %xmm3, %xmm0 ## xmm0 = xmm3[0,0,0,0]\n",
      "\tvinsertf128\t$1, %xmm0, %ymm0, %ymm0\n",
      "\tvmovups\t%ymm0, 128(%rsp)        ## 32-byte Spill\n",
      "\tvmovq\t%rcx, %xmm1\n",
      "\tvpcmpeqd\t%xmm0, %xmm0, %xmm0\n",
      "\tvunpcklpd\t%xmm1, %xmm1, %xmm1 ## xmm1 = xmm1[0,0]\n",
      "\tvinsertf128\t$1, %xmm1, %ymm1, %ymm5\n",
      "\tcmpl\t$255, %edx\n",
      "\tjne\tLBB0_1\n",
      "## BB#5:                                ## %for_test.outer.preheader\n",
      "\txorl\t%ecx, %ecx\n",
      "\ttestq\t%r9, %r9\n",
      "\tcmovsq\t%rcx, %r9\n",
      "\tvinsertf128\t$1, %xmm0, %ymm0, %ymm1\n",
      "\tmovl\t$1, %r14d\n",
      "\tmovl\t$-1, %r8d\n",
      "\tvinsertf128\t$1, %xmm0, %ymm0, %ymm0\n",
      "\tvmovups\t%ymm0, 96(%rsp)         ## 32-byte Spill\n",
      "\tvmovdqa\tLCPI0_2(%rip), %xmm4    ## xmm4 = [0,1,4,5,8,9,12,13,8,9,12,13,12,13,14,15]\n",
      "                                        ## implicit-def: YMM0\n",
      "\tvmovups\t%ymm0, (%rsp)           ## 32-byte Spill\n",
      "                                        ## implicit-def: YMM0\n",
      "\tvmovups\t%ymm0, -32(%rsp)        ## 32-byte Spill\n",
      "                                        ## implicit-def: YMM0\n",
      "\tvmovups\t%ymm0, 288(%rsp)        ## 32-byte Spill\n",
      "                                        ## implicit-def: YMM0\n",
      "\tvmovups\t%ymm0, 256(%rsp)        ## 32-byte Spill\n",
      "\tjmp\tLBB0_6\n",
      "LBB0_1:\n",
      "\tvinsertf128\t$1, %xmm0, %ymm0, %ymm1\n",
      "\tmovl\t$-1, %r8d\n",
      "\tvinsertf128\t$1, %xmm0, %ymm0, %ymm0\n",
      "\tvmovups\t%ymm0, 96(%rsp)         ## 32-byte Spill\n",
      "\tvmovdqa\tLCPI0_2(%rip), %xmm8    ## xmm8 = [0,1,4,5,8,9,12,13,8,9,12,13,12,13,14,15]\n",
      "                                        ## implicit-def: YMM0\n",
      "\tvmovups\t%ymm0, -32(%rsp)        ## 32-byte Spill\n",
      "                                        ## implicit-def: YMM0\n",
      "\tvmovups\t%ymm0, -64(%rsp)        ## 32-byte Spill\n",
      "                                        ## implicit-def: YMM0\n",
      "\tvmovups\t%ymm0, 288(%rsp)        ## 32-byte Spill\n",
      "                                        ## implicit-def: YMM0\n",
      "\tvmovups\t%ymm0, 256(%rsp)        ## 32-byte Spill\n",
      "\tjmp\tLBB0_2\n",
      "LBB0_53:                                ## %for_exit519\n",
      "                                        ##   in Loop: Header=BB0_2 Depth=1\n",
      "\tdecl\t%r9d\n",
      "\tmovl\t%esi, %ecx\n",
      "\timull\t%r9d, %ecx\n",
      "\tvpextrq\t$1, %xmm2, %rbp\n",
      "\tvcvtsi2ssq\t%rbp, %xmm0, %xmm1\n",
      "\tvmovq\t%xmm2, %rbp\n",
      "\tvcvtsi2ssq\t%rbp, %xmm0, %xmm2\n",
      "\tvinsertps\t$16, %xmm1, %xmm2, %xmm1 ## xmm1 = xmm2[0],xmm1[0],xmm2[2,3]\n",
      "\tvmovq\t%xmm3, %rbp\n",
      "\tvcvtsi2ssq\t%rbp, %xmm0, %xmm2\n",
      "\tvinsertps\t$32, %xmm2, %xmm1, %xmm1 ## xmm1 = xmm1[0,1],xmm2[0],xmm1[3]\n",
      "\tvpextrq\t$1, %xmm3, %rbp\n",
      "\tvcvtsi2ssq\t%rbp, %xmm0, %xmm2\n",
      "\tvinsertps\t$48, %xmm2, %xmm1, %xmm1 ## xmm1 = xmm1[0,1,2],xmm2[0]\n",
      "\tvpextrq\t$1, %xmm7, %rbp\n",
      "\tvcvtsi2ssq\t%rbp, %xmm0, %xmm2\n",
      "\tvmovq\t%xmm7, %rbp\n",
      "\tvcvtsi2ssq\t%rbp, %xmm0, %xmm3\n",
      "\tvinsertps\t$16, %xmm2, %xmm3, %xmm2 ## xmm2 = xmm3[0],xmm2[0],xmm3[2,3]\n",
      "\tvmovq\t%xmm0, %rbp\n",
      "\tvcvtsi2ssq\t%rbp, %xmm0, %xmm3\n",
      "\tvinsertps\t$32, %xmm3, %xmm2, %xmm2 ## xmm2 = xmm2[0,1],xmm3[0],xmm2[3]\n",
      "\tvpextrq\t$1, %xmm0, %rbp\n",
      "\tvcvtsi2ssq\t%rbp, %xmm0, %xmm0\n",
      "\tvinsertps\t$48, %xmm0, %xmm2, %xmm0 ## xmm0 = xmm2[0,1,2],xmm0[0]\n",
      "\tvinsertf128\t$1, %xmm1, %ymm0, %ymm0\n",
      "\taddl\t%ecx, %edx\n",
      "\tleal\t-4(,%rdx,4), %ecx\n",
      "\tmovslq\t%ecx, %rcx\n",
      "\tvmovups\t-96(%rsp), %ymm1        ## 32-byte Reload\n",
      "\tvmaskmovps\t%ymm0, %ymm1, (%rdi,%rcx)\n",
      "\tvmovups\t(%rsp), %ymm4           ## 32-byte Reload\n",
      "\tvmovups\t64(%rsp), %ymm1         ## 32-byte Reload\n",
      "\t.align\t4, 0x90\n",
      "LBB0_2:                                 ## %for_test288\n",
      "                                        ## =>This Loop Header: Depth=1\n",
      "                                        ##     Child Loop BB0_36 Depth 2\n",
      "                                        ##       Child Loop BB0_52 Depth 3\n",
      "                                        ##         Child Loop BB0_38 Depth 4\n",
      "                                        ##     Child Loop BB0_45 Depth 2\n",
      "                                        ##       Child Loop BB0_46 Depth 3\n",
      "\tmovq\t%r14, %r9\n",
      "\tcmpq\t%r10, %r9\n",
      "\tmovl\t$0, %ecx\n",
      "\tcmovel\t%r8d, %ecx\n",
      "\tvmovd\t%ecx, %xmm0\n",
      "\tvpermilps\t$0, %xmm0, %xmm0 ## xmm0 = xmm0[0,0,0,0]\n",
      "\tvinsertf128\t$1, %xmm0, %ymm0, %ymm0\n",
      "\tvandnps\t%ymm1, %ymm0, %ymm1\n",
      "\tvandps\t%ymm4, %ymm1, %ymm0\n",
      "\tvmovmskps\t%ymm0, %ecx\n",
      "\ttestl\t%ecx, %ecx\n",
      "\tje\tLBB0_9\n",
      "## BB#3:                                ## %for_loop290\n",
      "                                        ##   in Loop: Header=BB0_2 Depth=1\n",
      "\tmovl\t$1, %edx\n",
      "\tcmpl\t$2, %eax\n",
      "\tjl\tLBB0_4\n",
      "## BB#35:                               ## %foreach_full_body317.lr.ph\n",
      "                                        ##   in Loop: Header=BB0_2 Depth=1\n",
      "\tvmovups\t%ymm1, 64(%rsp)         ## 32-byte Spill\n",
      "\tvxorps\t%xmm0, %xmm0, %xmm0\n",
      "\tvcvtsi2ssq\t%r9, %xmm0, %xmm0\n",
      "\tvmulss\t60(%rsp), %xmm0, %xmm0  ## 4-byte Folded Reload\n",
      "\tvaddss\t56(%rsp), %xmm0, %xmm0  ## 4-byte Folded Reload\n",
      "\tvpermilps\t$0, %xmm0, %xmm0 ## xmm0 = xmm0[0,0,0,0]\n",
      "\tvinsertf128\t$1, %xmm0, %ymm0, %ymm0\n",
      "\tvmovups\t%ymm0, 224(%rsp)        ## 32-byte Spill\n",
      "\tleaq\t-1(%r9), %rcx\n",
      "\timulq\t%rsi, %rcx\n",
      "\tmovl\t$1, %edx\n",
      "\t.align\t4, 0x90\n",
      "LBB0_36:                                ## %foreach_full_body317\n",
      "                                        ##   Parent Loop BB0_2 Depth=1\n",
      "                                        ## =>  This Loop Header: Depth=2\n",
      "                                        ##       Child Loop BB0_52 Depth 3\n",
      "                                        ##         Child Loop BB0_38 Depth 4\n",
      "\tvmovd\t%edx, %xmm0\n",
      "\tvpermilps\t$0, %xmm0, %xmm0 ## xmm0 = xmm0[0,0,0,0]\n",
      "\tvpaddd\tLCPI0_0(%rip), %xmm0, %xmm1\n",
      "\tvpaddd\tLCPI0_1(%rip), %xmm0, %xmm0\n",
      "\tvinsertf128\t$1, %xmm0, %ymm1, %ymm0\n",
      "\tvcvtdq2ps\t%ymm0, %ymm0\n",
      "\tvmulps\t128(%rsp), %ymm0, %ymm0 ## 32-byte Folded Reload\n",
      "\tvaddps\t160(%rsp), %ymm0, %ymm0 ## 32-byte Folded Reload\n",
      "\tvmovups\t%ymm0, 192(%rsp)        ## 32-byte Spill\n",
      "\tvxorps\t%xmm2, %xmm2, %xmm2\n",
      "\tvxorps\t%xmm4, %xmm4, %xmm4\n",
      "\tvmovaps\t%ymm0, %ymm10\n",
      "\tvmovups\t224(%rsp), %ymm12       ## 32-byte Reload\n",
      "\tvmovups\t96(%rsp), %ymm15        ## 32-byte Reload\n",
      "\tjmp\tLBB0_52\n",
      "\t.align\t4, 0x90\n",
      "LBB0_51:                                ## %if_done400\n",
      "                                        ##   in Loop: Header=BB0_52 Depth=3\n",
      "\tvandnps\t%ymm3, %ymm11, %ymm15\n",
      "LBB0_52:                                ## %for_test378.outer\n",
      "                                        ##   Parent Loop BB0_2 Depth=1\n",
      "                                        ##     Parent Loop BB0_36 Depth=2\n",
      "                                        ## =>    This Loop Header: Depth=3\n",
      "                                        ##         Child Loop BB0_38 Depth 4\n",
      "\tvmovups\t%ymm12, 320(%rsp)       ## 32-byte Spill\n",
      "\tvmovups\t%ymm10, 352(%rsp)       ## 32-byte Spill\n",
      "\tvmulps\t%ymm12, %ymm12, %ymm6\n",
      "\tvmulps\t%ymm10, %ymm10, %ymm14\n",
      "\tvaddps\t%ymm6, %ymm14, %ymm13\n",
      "\t.align\t4, 0x90\n",
      "LBB0_38:                                ## %for_test378\n",
      "                                        ##   Parent Loop BB0_2 Depth=1\n",
      "                                        ##     Parent Loop BB0_36 Depth=2\n",
      "                                        ##       Parent Loop BB0_52 Depth=3\n",
      "                                        ## =>      This Inner Loop Header: Depth=4\n",
      "\tvextractf128\t$1, %ymm2, %xmm1\n",
      "\tvextractf128\t$1, %ymm5, %xmm3\n",
      "\tvpcmpgtq\t%xmm1, %xmm3, %xmm0\n",
      "\tvpcmpgtq\t%xmm2, %xmm5, %xmm7\n",
      "\tvshufps\t$-120, %xmm0, %xmm7, %xmm0 ## xmm0 = xmm7[0,2],xmm0[0,2]\n",
      "\tvpshufb\t%xmm8, %xmm0, %xmm0\n",
      "\tvextractf128\t$1, %ymm4, %xmm9\n",
      "\tvpcmpgtq\t%xmm9, %xmm3, %xmm3\n",
      "\tvpcmpgtq\t%xmm4, %xmm5, %xmm7\n",
      "\tvshufps\t$-120, %xmm3, %xmm7, %xmm3 ## xmm3 = xmm7[0,2],xmm3[0,2]\n",
      "\tvpshufb\t%xmm8, %xmm3, %xmm3\n",
      "\tvpunpcklqdq\t%xmm3, %xmm0, %xmm0 ## xmm0 = xmm0[0],xmm3[0]\n",
      "\tvpmovzxwd\t%xmm0, %xmm3\n",
      "\tvpslld\t$31, %xmm3, %xmm3\n",
      "\tvpsrad\t$31, %xmm3, %xmm3\n",
      "\tvpunpckhwd\t%xmm0, %xmm0, %xmm0 ## xmm0 = xmm0[4,4,5,5,6,6,7,7]\n",
      "\tvpslld\t$31, %xmm0, %xmm0\n",
      "\tvpsrad\t$31, %xmm0, %xmm0\n",
      "\tvinsertf128\t$1, %xmm0, %ymm3, %ymm0\n",
      "\tvandps\t%ymm15, %ymm0, %ymm3\n",
      "\tvmovmskps\t%ymm3, %ebp\n",
      "\ttestl\t%ebp, %ebp\n",
      "\tje\tLBB0_42\n",
      "## BB#39:                               ## %for_loop380\n",
      "                                        ##   in Loop: Header=BB0_38 Depth=4\n",
      "\tvcmpnleps\tLCPI0_3(%rip), %ymm13, %ymm10\n",
      "\tvandps\t%ymm3, %ymm10, %ymm12\n",
      "\tvmovmskps\t%ymm12, %ebx\n",
      "\tvxorps\t%xmm11, %xmm11, %xmm11\n",
      "\ttestl\t%ebx, %ebx\n",
      "\tje\tLBB0_40\n",
      "## BB#37:                               ## %safe_if_run_true402\n",
      "                                        ##   in Loop: Header=BB0_38 Depth=4\n",
      "\tvxorps\t%xmm15, %xmm15, %xmm15\n",
      "\tvmovaps\t%ymm12, %ymm11\n",
      "\tcmpl\t%ebp, %ebx\n",
      "\tje\tLBB0_38\n",
      "LBB0_40:                                ## %safe_if_after_true401\n",
      "                                        ##   in Loop: Header=BB0_52 Depth=3\n",
      "\tvblendvps\t%ymm10, LCPI0_5(%rip), %ymm3, %ymm13\n",
      "\tvmovmskps\t%ymm13, %ebx\n",
      "\ttestl\t%ebx, %ebx\n",
      "\tje\tLBB0_41\n",
      "## BB#50:                               ## %safe_if_run_false421\n",
      "                                        ##   in Loop: Header=BB0_52 Depth=3\n",
      "\tvsubps\t%ymm14, %ymm6, %ymm0\n",
      "\tvmovups\t256(%rsp), %ymm7        ## 32-byte Reload\n",
      "\tvblendvps\t%ymm13, %ymm0, %ymm7, %ymm7\n",
      "\tvmovups\t%ymm7, 256(%rsp)        ## 32-byte Spill\n",
      "\tvmovups\t320(%rsp), %ymm12       ## 32-byte Reload\n",
      "\tvaddps\t%ymm12, %ymm12, %ymm0\n",
      "\tvmovups\t352(%rsp), %ymm10       ## 32-byte Reload\n",
      "\tvmulps\t%ymm0, %ymm10, %ymm0\n",
      "\tvmovups\t288(%rsp), %ymm6        ## 32-byte Reload\n",
      "\tvblendvps\t%ymm13, %ymm0, %ymm6, %ymm6\n",
      "\tvmovups\t%ymm6, 288(%rsp)        ## 32-byte Spill\n",
      "\tvaddps\t224(%rsp), %ymm7, %ymm0 ## 32-byte Folded Reload\n",
      "\tvblendvps\t%ymm13, %ymm0, %ymm12, %ymm12\n",
      "\tvaddps\t192(%rsp), %ymm6, %ymm0 ## 32-byte Folded Reload\n",
      "\tvblendvps\t%ymm13, %ymm0, %ymm10, %ymm10\n",
      "\tvmovdqa\tLCPI0_4(%rip), %xmm0    ## xmm0 = [1,1]\n",
      "\tvmovdqa\t%xmm0, %xmm7\n",
      "\tvpaddq\t%xmm7, %xmm9, %xmm0\n",
      "\tvpaddq\t%xmm7, %xmm4, %xmm6\n",
      "\tvinsertf128\t$1, %xmm0, %ymm6, %ymm0\n",
      "\tvpaddq\t%xmm7, %xmm1, %xmm1\n",
      "\tvpaddq\t%xmm7, %xmm2, %xmm6\n",
      "\tvinsertf128\t$1, %xmm1, %ymm6, %ymm1\n",
      "\tvunpcklps\t%xmm13, %xmm13, %xmm6 ## xmm6 = xmm13[0,0,1,1]\n",
      "\tvunpckhps\t%xmm13, %xmm13, %xmm7 ## xmm7 = xmm13[2,2,3,3]\n",
      "\tvinsertf128\t$1, %xmm7, %ymm6, %ymm6\n",
      "\tvextractf128\t$1, %ymm13, %xmm7\n",
      "\tvblendvps\t%ymm6, %ymm1, %ymm2, %ymm2\n",
      "\tvunpcklps\t%xmm7, %xmm7, %xmm1 ## xmm1 = xmm7[0,0,1,1]\n",
      "\tvunpckhps\t%xmm7, %xmm7, %xmm6 ## xmm6 = xmm7[2,2,3,3]\n",
      "\tvinsertf128\t$1, %xmm6, %ymm1, %ymm1\n",
      "\tvblendvps\t%ymm1, %ymm0, %ymm4, %ymm4\n",
      "\tjmp\tLBB0_51\n",
      "\t.align\t4, 0x90\n",
      "LBB0_41:                                ##   in Loop: Header=BB0_52 Depth=3\n",
      "\tvmovups\t352(%rsp), %ymm10       ## 32-byte Reload\n",
      "\tvmovups\t320(%rsp), %ymm12       ## 32-byte Reload\n",
      "\tjmp\tLBB0_51\n",
      "\t.align\t4, 0x90\n",
      "LBB0_42:                                ## %for_exit381\n",
      "                                        ##   in Loop: Header=BB0_36 Depth=2\n",
      "\tvpextrq\t$1, %xmm4, %rbx\n",
      "\tvxorps\t%xmm0, %xmm0, %xmm0\n",
      "\tvcvtsi2ssq\t%rbx, %xmm0, %xmm0\n",
      "\tvmovq\t%xmm4, %rbx\n",
      "\tvcvtsi2ssq\t%rbx, %xmm0, %xmm3\n",
      "\tvinsertps\t$16, %xmm0, %xmm3, %xmm0 ## xmm0 = xmm3[0],xmm0[0],xmm3[2,3]\n",
      "\tvmovq\t%xmm9, %rbx\n",
      "\tvcvtsi2ssq\t%rbx, %xmm0, %xmm3\n",
      "\tvinsertps\t$32, %xmm3, %xmm0, %xmm0 ## xmm0 = xmm0[0,1],xmm3[0],xmm0[3]\n",
      "\tvpextrq\t$1, %xmm9, %rbx\n",
      "\tvcvtsi2ssq\t%rbx, %xmm0, %xmm3\n",
      "\tvinsertps\t$48, %xmm3, %xmm0, %xmm0 ## xmm0 = xmm0[0,1,2],xmm3[0]\n",
      "\tvpextrq\t$1, %xmm2, %rbx\n",
      "\tvcvtsi2ssq\t%rbx, %xmm0, %xmm3\n",
      "\tvmovq\t%xmm2, %rbx\n",
      "\tvcvtsi2ssq\t%rbx, %xmm0, %xmm2\n",
      "\tvinsertps\t$16, %xmm3, %xmm2, %xmm2 ## xmm2 = xmm2[0],xmm3[0],xmm2[2,3]\n",
      "\tvmovq\t%xmm1, %rbx\n",
      "\tvcvtsi2ssq\t%rbx, %xmm0, %xmm3\n",
      "\tvinsertps\t$32, %xmm3, %xmm2, %xmm2 ## xmm2 = xmm2[0,1],xmm3[0],xmm2[3]\n",
      "\tvpextrq\t$1, %xmm1, %rbx\n",
      "\tvcvtsi2ssq\t%rbx, %xmm0, %xmm1\n",
      "\tvinsertps\t$48, %xmm1, %xmm2, %xmm1 ## xmm1 = xmm2[0,1,2],xmm1[0]\n",
      "\tleal\t(%rdx,%rcx), %ebx\n",
      "\tleal\t-4(,%rbx,4), %ebx\n",
      "\tmovslq\t%ebx, %rbx\n",
      "\tvmovups\t%xmm1, (%rdi,%rbx)\n",
      "\tvmovups\t%xmm0, 16(%rdi,%rbx)\n",
      "\taddl\t$8, %edx\n",
      "\tcmpl\t%eax, %edx\n",
      "\tjl\tLBB0_36\n",
      "\tjmp\tLBB0_43\n",
      "\t.align\t4, 0x90\n",
      "LBB0_4:                                 ##   in Loop: Header=BB0_2 Depth=1\n",
      "\tvmovups\t%ymm1, 64(%rsp)         ## 32-byte Spill\n",
      "LBB0_43:                                ## %partial_inner_all_outer353\n",
      "                                        ##   in Loop: Header=BB0_2 Depth=1\n",
      "\tleaq\t1(%r9), %r14\n",
      "\tcmpl\t%r11d, %edx\n",
      "\tvmovups\t(%rsp), %ymm4           ## 32-byte Reload\n",
      "\tvmovups\t64(%rsp), %ymm1         ## 32-byte Reload\n",
      "\tjge\tLBB0_2\n",
      "## BB#44:                               ## %partial_inner_only485\n",
      "                                        ##   in Loop: Header=BB0_2 Depth=1\n",
      "\tvmovd\t%edx, %xmm0\n",
      "\tvpermilps\t$0, %xmm0, %xmm0 ## xmm0 = xmm0[0,0,0,0]\n",
      "\tvpaddd\tLCPI0_0(%rip), %xmm0, %xmm1\n",
      "\tvpaddd\tLCPI0_1(%rip), %xmm0, %xmm0\n",
      "\tvinsertf128\t$1, %xmm0, %ymm1, %ymm2\n",
      "\tvmovd\t%r11d, %xmm3\n",
      "\tvpermilps\t$0, %xmm3, %xmm3 ## xmm3 = xmm3[0,0,0,0]\n",
      "\tvpcmpgtd\t%xmm0, %xmm3, %xmm0\n",
      "\tvpcmpgtd\t%xmm1, %xmm3, %xmm1\n",
      "\tvinsertf128\t$1, %xmm0, %ymm1, %ymm14\n",
      "\tvmovups\t%ymm14, -96(%rsp)       ## 32-byte Spill\n",
      "\tvxorps\t%xmm0, %xmm0, %xmm0\n",
      "\tvcvtsi2ssq\t%r9, %xmm0, %xmm0\n",
      "\tvmulss\t60(%rsp), %xmm0, %xmm0  ## 4-byte Folded Reload\n",
      "\tvaddss\t56(%rsp), %xmm0, %xmm0  ## 4-byte Folded Reload\n",
      "\tvpermilps\t$0, %xmm0, %xmm0 ## xmm0 = xmm0[0,0,0,0]\n",
      "\tvinsertf128\t$1, %xmm0, %ymm0, %ymm1\n",
      "\tvmovups\t%ymm1, 224(%rsp)        ## 32-byte Spill\n",
      "\tvcvtdq2ps\t%ymm2, %ymm0\n",
      "\tvmulps\t128(%rsp), %ymm0, %ymm0 ## 32-byte Folded Reload\n",
      "\tvaddps\t160(%rsp), %ymm0, %ymm0 ## 32-byte Folded Reload\n",
      "\tvmovups\t%ymm0, 192(%rsp)        ## 32-byte Spill\n",
      "\tvxorps\t%xmm7, %xmm7, %xmm7\n",
      "\tvxorps\t%xmm2, %xmm2, %xmm2\n",
      "\tvmovaps\t%ymm0, %ymm11\n",
      "\tvmovaps\t%ymm1, %ymm10\n",
      "\tjmp\tLBB0_45\n",
      "\t.align\t4, 0x90\n",
      "LBB0_55:                                ## %safe_if_run_false559\n",
      "                                        ##   in Loop: Header=BB0_45 Depth=2\n",
      "\tvsubps\t%ymm9, %ymm10, %ymm4\n",
      "\tvmovups\t-64(%rsp), %ymm9        ## 32-byte Reload\n",
      "\tvblendvps\t%ymm14, %ymm4, %ymm9, %ymm9\n",
      "\tvmovups\t%ymm9, -64(%rsp)        ## 32-byte Spill\n",
      "\tvmovups\t320(%rsp), %ymm10       ## 32-byte Reload\n",
      "\tvaddps\t%ymm10, %ymm10, %ymm4\n",
      "\tvmovups\t352(%rsp), %ymm11       ## 32-byte Reload\n",
      "\tvmulps\t%ymm4, %ymm11, %ymm4\n",
      "\tvmovups\t-32(%rsp), %ymm6        ## 32-byte Reload\n",
      "\tvblendvps\t%ymm14, %ymm4, %ymm6, %ymm6\n",
      "\tvmovups\t%ymm6, -32(%rsp)        ## 32-byte Spill\n",
      "\tvaddps\t224(%rsp), %ymm9, %ymm4 ## 32-byte Folded Reload\n",
      "\tvblendvps\t%ymm14, %ymm4, %ymm10, %ymm10\n",
      "\tvaddps\t192(%rsp), %ymm6, %ymm4 ## 32-byte Folded Reload\n",
      "\tvblendvps\t%ymm14, %ymm4, %ymm11, %ymm11\n",
      "\tvmovdqa\tLCPI0_4(%rip), %xmm4    ## xmm4 = [1,1]\n",
      "\tvmovdqa\t%xmm4, %xmm6\n",
      "\tvpaddq\t%xmm6, %xmm3, %xmm3\n",
      "\tvpaddq\t%xmm6, %xmm2, %xmm4\n",
      "\tvinsertf128\t$1, %xmm3, %ymm4, %ymm3\n",
      "\tvpaddq\t%xmm6, %xmm0, %xmm0\n",
      "\tvpaddq\t%xmm6, %xmm7, %xmm4\n",
      "\tvinsertf128\t$1, %xmm0, %ymm4, %ymm0\n",
      "\tvunp"
     ]
    },
    {
     "data": {
      "text/plain": [
       "2328"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "cklps\t%xmm14, %xmm14, %xmm4 ## xmm4 = xmm14[0,0,1,1]\n",
      "\tvunpckhps\t%xmm14, %xmm14, %xmm6 ## xmm6 = xmm14[2,2,3,3]\n",
      "\tvinsertf128\t$1, %xmm6, %ymm4, %ymm4\n",
      "\tvextractf128\t$1, %ymm14, %xmm6\n",
      "\tvblendvps\t%ymm4, %ymm0, %ymm7, %ymm7\n",
      "\tvunpcklps\t%xmm6, %xmm6, %xmm0 ## xmm0 = xmm6[0,0,1,1]\n",
      "\tvunpckhps\t%xmm6, %xmm6, %xmm4 ## xmm4 = xmm6[2,2,3,3]\n",
      "\tvinsertf128\t$1, %xmm4, %ymm0, %ymm0\n",
      "\tvblendvps\t%ymm0, %ymm3, %ymm2, %ymm2\n",
      "\tvandnps\t%ymm1, %ymm12, %ymm14\n",
      "LBB0_45:                                ## %for_test516.outer\n",
      "                                        ##   Parent Loop BB0_2 Depth=1\n",
      "                                        ## =>  This Loop Header: Depth=2\n",
      "                                        ##       Child Loop BB0_46 Depth 3\n",
      "\tvmovups\t%ymm10, 320(%rsp)       ## 32-byte Spill\n",
      "\tvmovups\t%ymm11, 352(%rsp)       ## 32-byte Spill\n",
      "\tvmulps\t%ymm10, %ymm10, %ymm10\n",
      "\tvmulps\t%ymm11, %ymm11, %ymm9\n",
      "\tvaddps\t%ymm10, %ymm9, %ymm15\n",
      "\t.align\t4, 0x90\n",
      "LBB0_46:                                ## %for_test516\n",
      "                                        ##   Parent Loop BB0_2 Depth=1\n",
      "                                        ##     Parent Loop BB0_45 Depth=2\n",
      "                                        ## =>    This Inner Loop Header: Depth=3\n",
      "\tvextractf128\t$1, %ymm7, %xmm0\n",
      "\tvextractf128\t$1, %ymm5, %xmm1\n",
      "\tvpcmpgtq\t%xmm0, %xmm1, %xmm3\n",
      "\tvpcmpgtq\t%xmm7, %xmm5, %xmm4\n",
      "\tvshufps\t$-120, %xmm3, %xmm4, %xmm3 ## xmm3 = xmm4[0,2],xmm3[0,2]\n",
      "\tvpshufb\t%xmm8, %xmm3, %xmm4\n",
      "\tvextractf128\t$1, %ymm2, %xmm3\n",
      "\tvpcmpgtq\t%xmm3, %xmm1, %xmm1\n",
      "\tvpcmpgtq\t%xmm2, %xmm5, %xmm6\n",
      "\tvshufps\t$-120, %xmm1, %xmm6, %xmm1 ## xmm1 = xmm6[0,2],xmm1[0,2]\n",
      "\tvpshufb\t%xmm8, %xmm1, %xmm1\n",
      "\tvpunpcklqdq\t%xmm1, %xmm4, %xmm1 ## xmm1 = xmm4[0],xmm1[0]\n",
      "\tvpmovzxwd\t%xmm1, %xmm4\n",
      "\tvpslld\t$31, %xmm4, %xmm4\n",
      "\tvpsrad\t$31, %xmm4, %xmm4\n",
      "\tvpunpckhwd\t%xmm1, %xmm1, %xmm1 ## xmm1 = xmm1[4,4,5,5,6,6,7,7]\n",
      "\tvpslld\t$31, %xmm1, %xmm1\n",
      "\tvpsrad\t$31, %xmm1, %xmm1\n",
      "\tvinsertf128\t$1, %xmm1, %ymm4, %ymm1\n",
      "\tvandps\t%ymm14, %ymm1, %ymm1\n",
      "\tvmovmskps\t%ymm1, %ecx\n",
      "\ttestl\t%ecx, %ecx\n",
      "\tje\tLBB0_53\n",
      "## BB#47:                               ## %for_loop518\n",
      "                                        ##   in Loop: Header=BB0_46 Depth=3\n",
      "\tvcmpnleps\tLCPI0_3(%rip), %ymm15, %ymm13\n",
      "\tvandps\t%ymm1, %ymm13, %ymm11\n",
      "\tvmovmskps\t%ymm11, %ebx\n",
      "\tvxorps\t%xmm12, %xmm12, %xmm12\n",
      "\ttestl\t%ebx, %ebx\n",
      "\tje\tLBB0_48\n",
      "## BB#54:                               ## %safe_if_run_true540\n",
      "                                        ##   in Loop: Header=BB0_46 Depth=3\n",
      "\tvxorps\t%xmm14, %xmm14, %xmm14\n",
      "\tvmovaps\t%ymm11, %ymm12\n",
      "\tcmpl\t%ecx, %ebx\n",
      "\tje\tLBB0_46\n",
      "LBB0_48:                                ## %safe_if_after_true539\n",
      "                                        ##   in Loop: Header=BB0_45 Depth=2\n",
      "\tvblendvps\t%ymm13, LCPI0_5(%rip), %ymm1, %ymm14\n",
      "\tvmovmskps\t%ymm14, %ecx\n",
      "\ttestl\t%ecx, %ecx\n",
      "\tjne\tLBB0_55\n",
      "## BB#49:                               ##   in Loop: Header=BB0_45 Depth=2\n",
      "\tvmovups\t352(%rsp), %ymm11       ## 32-byte Reload\n",
      "\tvmovups\t320(%rsp), %ymm10       ## 32-byte Reload\n",
      "\tvandnps\t%ymm1, %ymm12, %ymm14\n",
      "\tjmp\tLBB0_45\n",
      "\t.align\t4, 0x90\n",
      "LBB0_31:                                ## %for_exit156\n",
      "                                        ##   in Loop: Header=BB0_6 Depth=1\n",
      "\tdecl\t%r15d\n",
      "\tmovl\t%esi, %ecx\n",
      "\timull\t%r15d, %ecx\n",
      "\tvpextrq\t$1, %xmm0, %rdx\n",
      "\tvcvtsi2ssq\t%rdx, %xmm0, %xmm1\n",
      "\tvmovq\t%xmm0, %rdx\n",
      "\tvcvtsi2ssq\t%rdx, %xmm0, %xmm0\n",
      "\tvinsertps\t$16, %xmm1, %xmm0, %xmm0 ## xmm0 = xmm0[0],xmm1[0],xmm0[2,3]\n",
      "\tvmovq\t%xmm3, %rdx\n",
      "\tvcvtsi2ssq\t%rdx, %xmm0, %xmm1\n",
      "\tvinsertps\t$32, %xmm1, %xmm0, %xmm0 ## xmm0 = xmm0[0,1],xmm1[0],xmm0[3]\n",
      "\tvpextrq\t$1, %xmm3, %rdx\n",
      "\tvcvtsi2ssq\t%rdx, %xmm0, %xmm1\n",
      "\tvinsertps\t$48, %xmm1, %xmm0, %xmm0 ## xmm0 = xmm0[0,1,2],xmm1[0]\n",
      "\tvpextrq\t$1, %xmm14, %rdx\n",
      "\tvcvtsi2ssq\t%rdx, %xmm0, %xmm1\n",
      "\tvmovq\t%xmm14, %rdx\n",
      "\tvcvtsi2ssq\t%rdx, %xmm0, %xmm3\n",
      "\tvinsertps\t$16, %xmm1, %xmm3, %xmm1 ## xmm1 = xmm3[0],xmm1[0],xmm3[2,3]\n",
      "\tvmovq\t%xmm2, %rdx\n",
      "\tvcvtsi2ssq\t%rdx, %xmm0, %xmm3\n",
      "\tvinsertps\t$32, %xmm3, %xmm1, %xmm1 ## xmm1 = xmm1[0,1],xmm3[0],xmm1[3]\n",
      "\tvpextrq\t$1, %xmm2, %rdx\n",
      "\tvcvtsi2ssq\t%rdx, %xmm0, %xmm2\n",
      "\tvinsertps\t$48, %xmm2, %xmm1, %xmm1 ## xmm1 = xmm1[0,1,2],xmm2[0]\n",
      "\tvinsertf128\t$1, %xmm0, %ymm1, %ymm0\n",
      "\taddl\t%ecx, %ebx\n",
      "\tleal\t-4(,%rbx,4), %ecx\n",
      "\tmovslq\t%ecx, %rcx\n",
      "\tvmovups\t-64(%rsp), %ymm1        ## 32-byte Reload\n",
      "\tvmaskmovps\t%ymm0, %ymm1, (%rdi,%rcx)\n",
      "\tvmovups\t64(%rsp), %ymm1         ## 32-byte Reload\n",
      "LBB0_6:                                 ## %for_test.outer\n",
      "                                        ## =>This Loop Header: Depth=1\n",
      "                                        ##     Child Loop BB0_8 Depth 2\n",
      "                                        ##     Child Loop BB0_12 Depth 2\n",
      "                                        ##       Child Loop BB0_14 Depth 3\n",
      "                                        ##         Child Loop BB0_22 Depth 4\n",
      "                                        ##           Child Loop BB0_15 Depth 5\n",
      "                                        ##     Child Loop BB0_26 Depth 2\n",
      "                                        ##       Child Loop BB0_27 Depth 3\n",
      "\tcmpl\t$1, %eax\n",
      "\tjle\tLBB0_7\n",
      "\t.align\t4, 0x90\n",
      "LBB0_12:                                ## %for_test.us\n",
      "                                        ##   Parent Loop BB0_6 Depth=1\n",
      "                                        ## =>  This Loop Header: Depth=2\n",
      "                                        ##       Child Loop BB0_14 Depth 3\n",
      "                                        ##         Child Loop BB0_22 Depth 4\n",
      "                                        ##           Child Loop BB0_15 Depth 5\n",
      "\tmovq\t%r14, %r15\n",
      "\tcmpq\t%r10, %r15\n",
      "\tmovl\t$0, %ecx\n",
      "\tcmovel\t%r8d, %ecx\n",
      "\tvmovd\t%ecx, %xmm0\n",
      "\tvpermilps\t$0, %xmm0, %xmm0 ## xmm0 = xmm0[0,0,0,0]\n",
      "\tvinsertf128\t$1, %xmm0, %ymm0, %ymm0\n",
      "\tvandnps\t%ymm1, %ymm0, %ymm1\n",
      "\tvmovmskps\t%ymm1, %ecx\n",
      "\ttestl\t%ecx, %ecx\n",
      "\tje\tLBB0_9\n",
      "## BB#13:                               ## %foreach_full_body.lr.ph.us\n",
      "                                        ##   in Loop: Header=BB0_12 Depth=2\n",
      "\tvmovups\t%ymm1, 64(%rsp)         ## 32-byte Spill\n",
      "\tleaq\t1(%r15), %r14\n",
      "\tvxorps\t%xmm0, %xmm0, %xmm0\n",
      "\tvcvtsi2ssq\t%r15, %xmm0, %xmm0\n",
      "\tvmulss\t60(%rsp), %xmm0, %xmm0  ## 4-byte Folded Reload\n",
      "\tvaddss\t56(%rsp), %xmm0, %xmm0  ## 4-byte Folded Reload\n",
      "\tvpermilps\t$0, %xmm0, %xmm0 ## xmm0 = xmm0[0,0,0,0]\n",
      "\tvinsertf128\t$1, %xmm0, %ymm0, %ymm0\n",
      "\tvmovups\t%ymm0, 224(%rsp)        ## 32-byte Spill\n",
      "\tleaq\t-1(%r15), %rdx\n",
      "\timulq\t%rsi, %rdx\n",
      "\tmovl\t$1, %ebx\n",
      "\t.align\t4, 0x90\n",
      "LBB0_14:                                ## %foreach_full_body.us\n",
      "                                        ##   Parent Loop BB0_6 Depth=1\n",
      "                                        ##     Parent Loop BB0_12 Depth=2\n",
      "                                        ## =>    This Loop Header: Depth=3\n",
      "                                        ##         Child Loop BB0_22 Depth 4\n",
      "                                        ##           Child Loop BB0_15 Depth 5\n",
      "\tvmovd\t%ebx, %xmm0\n",
      "\tvpermilps\t$0, %xmm0, %xmm0 ## xmm0 = xmm0[0,0,0,0]\n",
      "\tvpaddd\tLCPI0_0(%rip), %xmm0, %xmm1\n",
      "\tvpaddd\tLCPI0_1(%rip), %xmm0, %xmm0\n",
      "\tvinsertf128\t$1, %xmm0, %ymm1, %ymm0\n",
      "\tvcvtdq2ps\t%ymm0, %ymm0\n",
      "\tvmulps\t128(%rsp), %ymm0, %ymm0 ## 32-byte Folded Reload\n",
      "\tvaddps\t160(%rsp), %ymm0, %ymm0 ## 32-byte Folded Reload\n",
      "\tvmovups\t%ymm0, 192(%rsp)        ## 32-byte Spill\n",
      "\tvxorps\t%xmm14, %xmm14, %xmm14\n",
      "\tvxorps\t%xmm9, %xmm9, %xmm9\n",
      "\tvmovaps\t%ymm0, %ymm11\n",
      "\tvmovups\t224(%rsp), %ymm12       ## 32-byte Reload\n",
      "\tvmovups\t96(%rsp), %ymm13        ## 32-byte Reload\n",
      "\tjmp\tLBB0_22\n",
      "\t.align\t4, 0x90\n",
      "LBB0_21:                                ## %if_done.us\n",
      "                                        ##   in Loop: Header=BB0_22 Depth=4\n",
      "\tvandnps\t%ymm3, %ymm10, %ymm13\n",
      "LBB0_22:                                ## %for_test52.outer.us\n",
      "                                        ##   Parent Loop BB0_6 Depth=1\n",
      "                                        ##     Parent Loop BB0_12 Depth=2\n",
      "                                        ##       Parent Loop BB0_14 Depth=3\n",
      "                                        ## =>      This Loop Header: Depth=4\n",
      "                                        ##           Child Loop BB0_15 Depth 5\n",
      "\tvmovups\t%ymm12, 320(%rsp)       ## 32-byte Spill\n",
      "\tvmovups\t%ymm11, 352(%rsp)       ## 32-byte Spill\n",
      "\tvmulps\t%ymm12, %ymm12, %ymm6\n",
      "\tvmulps\t%ymm11, %ymm11, %ymm15\n",
      "\tvaddps\t%ymm6, %ymm15, %ymm7\n",
      "\t.align\t4, 0x90\n",
      "LBB0_15:                                ## %for_test52.us\n",
      "                                        ##   Parent Loop BB0_6 Depth=1\n",
      "                                        ##     Parent Loop BB0_12 Depth=2\n",
      "                                        ##       Parent Loop BB0_14 Depth=3\n",
      "                                        ##         Parent Loop BB0_22 Depth=4\n",
      "                                        ## =>        This Inner Loop Header: Depth=5\n",
      "\tvextractf128\t$1, %ymm14, %xmm1\n",
      "\tvextractf128\t$1, %ymm5, %xmm3\n",
      "\tvpcmpgtq\t%xmm1, %xmm3, %xmm0\n",
      "\tvpcmpgtq\t%xmm14, %xmm5, %xmm2\n",
      "\tvshufps\t$-120, %xmm0, %xmm2, %xmm0 ## xmm0 = xmm2[0,2],xmm0[0,2]\n",
      "\tvpshufb\t%xmm4, %xmm0, %xmm0\n",
      "\tvextractf128\t$1, %ymm9, %xmm8\n",
      "\tvpcmpgtq\t%xmm8, %xmm3, %xmm2\n",
      "\tvpcmpgtq\t%xmm9, %xmm5, %xmm3\n",
      "\tvshufps\t$-120, %xmm2, %xmm3, %xmm2 ## xmm2 = xmm3[0,2],xmm2[0,2]\n",
      "\tvpshufb\t%xmm4, %xmm2, %xmm2\n",
      "\tvpunpcklqdq\t%xmm2, %xmm0, %xmm0 ## xmm0 = xmm0[0],xmm2[0]\n",
      "\tvpmovzxwd\t%xmm0, %xmm2\n",
      "\tvpslld\t$31, %xmm2, %xmm2\n",
      "\tvpsrad\t$31, %xmm2, %xmm2\n",
      "\tvpunpckhwd\t%xmm0, %xmm0, %xmm0 ## xmm0 = xmm0[4,4,5,5,6,6,7,7]\n",
      "\tvpslld\t$31, %xmm0, %xmm0\n",
      "\tvpsrad\t$31, %xmm0, %xmm0\n",
      "\tvinsertf128\t$1, %xmm0, %ymm2, %ymm0\n",
      "\tvandps\t%ymm13, %ymm0, %ymm3\n",
      "\tvmovmskps\t%ymm3, %ebp\n",
      "\ttestl\t%ebp, %ebp\n",
      "\tje\tLBB0_10\n",
      "## BB#16:                               ## %for_loop54.us\n",
      "                                        ##   in Loop: Header=BB0_15 Depth=5\n",
      "\tvcmpnleps\tLCPI0_3(%rip), %ymm7, %ymm12\n",
      "\tvandps\t%ymm3, %ymm12, %ymm11\n",
      "\tvmovmskps\t%ymm11, %ecx\n",
      "\tvxorps\t%xmm10, %xmm10, %xmm10\n",
      "\ttestl\t%ecx, %ecx\n",
      "\tje\tLBB0_18\n",
      "## BB#17:                               ## %safe_if_run_true.us\n",
      "                                        ##   in Loop: Header=BB0_15 Depth=5\n",
      "\tvxorps\t%xmm13, %xmm13, %xmm13\n",
      "\tvmovaps\t%ymm11, %ymm10\n",
      "\tcmpl\t%ebp, %ecx\n",
      "\tje\tLBB0_15\n",
      "LBB0_18:                                ## %safe_if_after_true.us\n",
      "                                        ##   in Loop: Header=BB0_22 Depth=4\n",
      "\tvblendvps\t%ymm12, LCPI0_5(%rip), %ymm3, %ymm7\n",
      "\tvmovmskps\t%ymm7, %ecx\n",
      "\ttestl\t%ecx, %ecx\n",
      "\tje\tLBB0_19\n",
      "## BB#20:                               ## %safe_if_run_false.us\n",
      "                                        ##   in Loop: Header=BB0_22 Depth=4\n",
      "\tvsubps\t%ymm15, %ymm6, %ymm0\n",
      "\tvmovups\t256(%rsp), %ymm6        ## 32-byte Reload\n",
      "\tvblendvps\t%ymm7, %ymm0, %ymm6, %ymm6\n",
      "\tvmovups\t%ymm6, 256(%rsp)        ## 32-byte Spill\n",
      "\tvmovups\t320(%rsp), %ymm12       ## 32-byte Reload\n",
      "\tvaddps\t%ymm12, %ymm12, %ymm0\n",
      "\tvmovups\t352(%rsp), %ymm11       ## 32-byte Reload\n",
      "\tvmulps\t%ymm0, %ymm11, %ymm0\n",
      "\tvmovups\t288(%rsp), %ymm2        ## 32-byte Reload\n",
      "\tvblendvps\t%ymm7, %ymm0, %ymm2, %ymm2\n",
      "\tvmovups\t%ymm2, 288(%rsp)        ## 32-byte Spill\n",
      "\tvaddps\t224(%rsp), %ymm6, %ymm0 ## 32-byte Folded Reload\n",
      "\tvblendvps\t%ymm7, %ymm0, %ymm12, %ymm12\n",
      "\tvaddps\t192(%rsp), %ymm2, %ymm0 ## 32-byte Folded Reload\n",
      "\tvblendvps\t%ymm7, %ymm0, %ymm11, %ymm11\n",
      "\tvmovdqa\tLCPI0_4(%rip), %xmm0    ## xmm0 = [1,1]\n",
      "\tvmovdqa\t%xmm0, %xmm6\n",
      "\tvpaddq\t%xmm6, %xmm8, %xmm0\n",
      "\tvpaddq\t%xmm6, %xmm9, %xmm2\n",
      "\tvinsertf128\t$1, %xmm0, %ymm2, %ymm0\n",
      "\tvpaddq\t%xmm6, %xmm1, %xmm1\n",
      "\tvpaddq\t%xmm6, %xmm14, %xmm2\n",
      "\tvinsertf128\t$1, %xmm1, %ymm2, %ymm1\n",
      "\tvunpcklps\t%xmm7, %xmm7, %xmm2 ## xmm2 = xmm7[0,0,1,1]\n",
      "\tvunpckhps\t%xmm7, %xmm7, %xmm6 ## xmm6 = xmm7[2,2,3,3]\n",
      "\tvinsertf128\t$1, %xmm6, %ymm2, %ymm2\n",
      "\tvextractf128\t$1, %ymm7, %xmm6\n",
      "\tvblendvps\t%ymm2, %ymm1, %ymm14, %ymm14\n",
      "\tvunpcklps\t%xmm6, %xmm6, %xmm1 ## xmm1 = xmm6[0,0,1,1]\n",
      "\tvunpckhps\t%xmm6, %xmm6, %xmm2 ## xmm2 = xmm6[2,2,3,3]\n",
      "\tvinsertf128\t$1, %xmm2, %ymm1, %ymm1\n",
      "\tvblendvps\t%ymm1, %ymm0, %ymm9, %ymm9\n",
      "\tjmp\tLBB0_21\n",
      "\t.align\t4, 0x90\n",
      "LBB0_19:                                ##   in Loop: Header=BB0_22 Depth=4\n",
      "\tvmovups\t352(%rsp), %ymm11       ## 32-byte Reload\n",
      "\tvmovups\t320(%rsp), %ymm12       ## 32-byte Reload\n",
      "\tjmp\tLBB0_21\n",
      "\t.align\t4, 0x90\n",
      "LBB0_10:                                ## %for_exit55.us\n",
      "                                        ##   in Loop: Header=BB0_14 Depth=3\n",
      "\tvpextrq\t$1, %xmm9, %rcx\n",
      "\tvxorps\t%xmm0, %xmm0, %xmm0\n",
      "\tvcvtsi2ssq\t%rcx, %xmm0, %xmm0\n",
      "\tvmovq\t%xmm9, %rcx\n",
      "\tvcvtsi2ssq\t%rcx, %xmm0, %xmm2\n",
      "\tvinsertps\t$16, %xmm0, %xmm2, %xmm0 ## xmm0 = xmm2[0],xmm0[0],xmm2[2,3]\n",
      "\tvmovq\t%xmm8, %rcx\n",
      "\tvcvtsi2ssq\t%rcx, %xmm0, %xmm2\n",
      "\tvinsertps\t$32, %xmm2, %xmm0, %xmm0 ## xmm0 = xmm0[0,1],xmm2[0],xmm0[3]\n",
      "\tvpextrq\t$1, %xmm8, %rcx\n",
      "\tvcvtsi2ssq\t%rcx, %xmm0, %xmm2\n",
      "\tvinsertps\t$48, %xmm2, %xmm0, %xmm0 ## xmm0 = xmm0[0,1,2],xmm2[0]\n",
      "\tvpextrq\t$1, %xmm14, %rcx\n",
      "\tvcvtsi2ssq\t%rcx, %xmm0, %xmm2\n",
      "\tvmovq\t%xmm14, %rcx\n",
      "\tvcvtsi2ssq\t%rcx, %xmm0, %xmm3\n",
      "\tvinsertps\t$16, %xmm2, %xmm3, %xmm2 ## xmm2 = xmm3[0],xmm2[0],xmm3[2,3]\n",
      "\tvmovq\t%xmm1, %rcx\n",
      "\tvcvtsi2ssq\t%rcx, %xmm0, %xmm3\n",
      "\tvinsertps\t$32, %xmm3, %xmm2, %xmm2 ## xmm2 = xmm2[0,1],xmm3[0],xmm2[3]\n",
      "\tvpextrq\t$1, %xmm1, %rcx\n",
      "\tvcvtsi2ssq\t%rcx, %xmm0, %xmm1\n",
      "\tvinsertps\t$48, %xmm1, %xmm2, %xmm1 ## xmm1 = xmm2[0,1,2],xmm1[0]\n",
      "\tleal\t(%rbx,%rdx), %ecx\n",
      "\tleal\t-4(,%rcx,4), %ecx\n",
      "\tmovslq\t%ecx, %rcx\n",
      "\tvmovups\t%xmm1, (%rdi,%rcx)\n",
      "\tvmovups\t%xmm0, 16(%rdi,%rcx)\n",
      "\taddl\t$8, %ebx\n",
      "\tcmpl\t%eax, %ebx\n",
      "\tjl\tLBB0_14\n",
      "## BB#11:                               ## %partial_inner_all_outer.us\n",
      "                                        ##   in Loop: Header=BB0_12 Depth=2\n",
      "\tcmpl\t%r11d, %ebx\n",
      "\tvmovups\t64(%rsp), %ymm1         ## 32-byte Reload\n",
      "\tjge\tLBB0_12\n",
      "\tjmp\tLBB0_25\n",
      "\t.align\t4, 0x90\n",
      "LBB0_7:                                 ## %for_test.preheader\n",
      "                                        ##   in Loop: Header=BB0_6 Depth=1\n",
      "\tdecq\t%r14\n",
      "\tmovq\t%r14, %r15\n",
      "\t.align\t4, 0x90\n",
      "LBB0_8:                                 ## %for_test\n",
      "                                        ##   Parent Loop BB0_6 Depth=1\n",
      "                                        ## =>  This Inner Loop Header: Depth=2\n",
      "\tcmpq\t%r15, %r9\n",
      "\tmovl\t$0, %ecx\n",
      "\tcmovel\t%r8d, %ecx\n",
      "\tvmovd\t%ecx, %xmm0\n",
      "\tvpermilps\t$0, %xmm0, %xmm0 ## xmm0 = xmm0[0,0,0,0]\n",
      "\tvinsertf128\t$1, %xmm0, %ymm0, %ymm0\n",
      "\tvandnps\t%ymm1, %ymm0, %ymm1\n",
      "\tvmovmskps\t%ymm1, %ecx\n",
      "\ttestl\t%ecx, %ecx\n",
      "\tje\tLBB0_9\n",
      "## BB#23:                               ## %partial_inner_all_outer\n",
      "                                        ##   in Loop: Header=BB0_8 Depth=2\n",
      "\tincq\t%r15\n",
      "\tcmpl\t$2, %r11d\n",
      "\tjl\tLBB0_8\n",
      "## BB#24:                               ## %partial_inner_only.loopexit913\n",
      "                                        ##   in Loop: Header=BB0_6 Depth=1\n",
      "\tleaq\t1(%r15), %r14\n",
      "\tmovl\t$1, %ebx\n",
      "LBB0_25:                                ## %partial_inner_only\n",
      "                                        ##   in Loop: Header=BB0_6 Depth=1\n",
      "\tvmovups\t%ymm1, 64(%rsp)         ## 32-byte Spill\n",
      "\tvmovd\t%ebx, %xmm0\n",
      "\tvpermilps\t$0, %xmm0, %xmm0 ## xmm0 = xmm0[0,0,0,0]\n",
      "\tvpaddd\tLCPI0_0(%rip), %xmm0, %xmm1\n",
      "\tvpaddd\tLCPI0_1(%rip), %xmm0, %xmm0\n",
      "\tvinsertf128\t$1, %xmm0, %ymm1, %ymm2\n",
      "\tvmovd\t%r11d, %xmm3\n",
      "\tvpermilps\t$0, %xmm3, %xmm3 ## xmm3 = xmm3[0,0,0,0]\n",
      "\tvpcmpgtd\t%xmm0, %xmm3, %xmm0\n",
      "\tvpcmpgtd\t%xmm1, %xmm3, %xmm1\n",
      "\tvinsertf128\t$1, %xmm0, %ymm1, %ymm11\n",
      "\tvmovups\t%ymm11, -64(%rsp)       ## 32-byte Spill\n",
      "\tvxorps\t%xmm0, %xmm0, %xmm0\n",
      "\tvcvtsi2ssq\t%r15, %xmm0, %xmm0\n",
      "\tvmulss\t60(%rsp), %xmm0, %xmm0  ## 4-byte Folded Reload\n",
      "\tvaddss\t56(%rsp), %xmm0, %xmm0  ## 4-byte Folded Reload\n",
      "\tvpermilps\t$0, %xmm0, %xmm0 ## xmm0 = xmm0[0,0,0,0]\n",
      "\tvinsertf128\t$1, %xmm0, %ymm0, %ymm1\n",
      "\tvmovups\t%ymm1, 224(%rsp)        ## 32-byte Spill\n",
      "\tvcvtdq2ps\t%ymm2, %ymm0\n",
      "\tvmulps\t128(%rsp), %ymm0, %ymm0 ## 32-byte Folded Reload\n",
      "\tvaddps\t160(%rsp), %ymm0, %ymm2 ## 32-byte Folded Reload\n",
      "\tvmovups\t%ymm2, 192(%rsp)        ## 32-byte Spill\n",
      "\tvxorps\t%xmm14, %xmm14, %xmm14\n",
      "\tvxorps\t%xmm0, %xmm0, %xmm0\n",
      "\tvmovaps\t%ymm2, %ymm10\n",
      "\tvmovaps\t%ymm1, %ymm9\n",
      "\tjmp\tLBB0_26\n",
      "\t.align\t4, 0x90\n",
      "LBB0_33:                                ## %safe_if_run_false196\n",
      "                                        ##   in Loop: Header=BB0_26 Depth=2\n",
      "\tvsubps\t%ymm8, %ymm9, %ymm6\n",
      "\tvmovups\t-32(%rsp), %ymm8        ## 32-byte Reload\n",
      "\tvblendvps\t%ymm11, %ymm6, %ymm8, %ymm8\n",
      "\tvmovups\t%ymm8, -32(%rsp)        ## 32-byte Spill\n",
      "\tvmovups\t320(%rsp), %ymm9        ## 32-byte Reload\n",
      "\tvaddps\t%ymm9, %ymm9, %ymm6\n",
      "\tvmovups\t352(%rsp), %ymm10       ## 32-byte Reload\n",
      "\tvmulps\t%ymm6, %ymm10, %ymm6\n",
      "\tvmovups\t(%rsp), %ymm7           ## 32-byte Reload\n",
      "\tvblendvps\t%ymm11, %ymm6, %ymm7, %ymm7\n",
      "\tvmovups\t%ymm7, (%rsp)           ## 32-byte Spill\n",
      "\tvaddps\t224(%rsp), %ymm8, %ymm6 ## 32-byte Folded Reload\n",
      "\tvblendvps\t%ymm11, %ymm6, %ymm9, %ymm9\n",
      "\tvaddps\t192(%rsp), %ymm7, %ymm6 ## 32-byte Folded Reload\n",
      "\tvblendvps\t%ymm11, %ymm6, %ymm10, %ymm10\n",
      "\tvmovdqa\tLCPI0_4(%rip), %xmm6    ## xmm6 = [1,1]\n",
      "\tvmovdqa\t%xmm6, %xmm7\n",
      "\tvpaddq\t%xmm7, %xmm3, %xmm3\n",
      "\tvpaddq\t%xmm7, %xmm0, %xmm6\n",
      "\tvinsertf128\t$1, %xmm3, %ymm6, %ymm3\n",
      "\tvpaddq\t%xmm7, %xmm2, %xmm2\n",
      "\tvpaddq\t%xmm7, %xmm14, %xmm6\n",
      "\tvinsertf128\t$1, %xmm2, %ymm6, %ymm2\n",
      "\tvunpcklps\t%xmm11, %xmm11, %xmm6 ## xmm6 = xmm11[0,0,1,1]\n",
      "\tvunpckhps\t%xmm11, %xmm11, %xmm7 ## xmm7 = xmm11[2,2,3,3]\n",
      "\tvinsertf128\t$1, %xmm7, %ymm6, %ymm6\n",
      "\tvextractf128\t$1, %ymm11, %xmm7\n",
      "\tvblendvps\t%ymm6, %ymm2, %ymm14, %ymm14\n",
      "\tvunpcklps\t%xmm7, %xmm7, %xmm2 ## xmm2 = xmm7[0,0,1,1]\n",
      "\tvunpckhps\t%xmm7, %xmm7, %xmm6 ## xmm6 = xmm7[2,2,3,3]\n",
      "\tvinsertf128\t$1, %xmm6, %ymm2, %ymm2\n",
      "\tvblendvps\t%ymm2, %ymm3, %ymm0, %ymm0\n",
      "\tvandnps\t%ymm1, %ymm12, %ymm11\n",
      "LBB0_26:                                ## %for_test153.outer\n",
      "                                        ##   Parent Loop BB0_6 Depth=1\n",
      "                                        ## =>  This Loop Header: Depth=2\n",
      "                                        ##       Child Loop BB0_27 Depth 3\n",
      "\tvmovups\t%ymm9, 320(%rsp)        ## 32-byte Spill\n",
      "\tvmovups\t%ymm10, 352(%rsp)       ## 32-byte Spill\n",
      "\tvmulps\t%ymm9, %ymm9, %ymm9\n",
      "\tvmulps\t%ymm10, %ymm10, %ymm8\n",
      "\tvaddps\t%ymm9, %ymm8, %ymm13\n",
      "\t.align\t4, 0x90\n",
      "LBB0_27:                                ## %for_test153\n",
      "                                        ##   Parent Loop BB0_6 Depth=1\n",
      "                                        ##     Parent Loop BB0_26 Depth=2\n",
      "                                        ## =>    This Inner Loop Header: Depth=3\n",
      "\tvextractf128\t$1, %ymm14, %xmm2\n",
      "\tvextractf128\t$1, %ymm5, %xmm1\n",
      "\tvpcmpgtq\t%xmm2, %xmm1, %xmm3\n",
      "\tvpcmpgtq\t%xmm14, %xmm5, %xmm7\n",
      "\tvshufps\t$-120, %xmm3, %xmm7, %xmm3 ## xmm3 = xmm7[0,2],xmm3[0,2]\n",
      "\tvpshufb\t%xmm4, %xmm3, %xmm7\n",
      "\tvextractf128\t$1, %ymm0, %xmm3\n",
      "\tvpcmpgtq\t%xmm3, %xmm1, %xmm1\n",
      "\tvpcmpgtq\t%xmm0, %xmm5, %xmm6\n",
      "\tvshufps\t$-120, %xmm1, %xmm6, %xmm1 ## xmm1 = xmm6[0,2],xmm1[0,2]\n",
      "\tvpshufb\t%xmm4, %xmm1, %xmm1\n",
      "\tvpunpcklqdq\t%xmm1, %xmm7, %xmm1 ## xmm1 = xmm7[0],xmm1[0]\n",
      "\tvpmovzxwd\t%xmm1, %xmm6\n",
      "\tvpslld\t$31, %xmm6, %xmm6\n",
      "\tvpsrad\t$31, %xmm6, %xmm6\n",
      "\tvpunpckhwd\t%xmm1, %xmm1, %xmm1 ## xmm1 = xmm1[4,4,5,5,6,6,7,7]\n",
      "\tvpslld\t$31, %xmm1, %xmm1\n",
      "\tvpsrad\t$31, %xmm1, %xmm1\n",
      "\tvinsertf128\t$1, %xmm1, %ymm6, %ymm1\n",
      "\tvandps\t%ymm11, %ymm1, %ymm1\n",
      "\tvmovmskps\t%ymm1, %edx\n",
      "\ttestl\t%edx, %edx\n",
      "\tje\tLBB0_31\n",
      "## BB#28:                               ## %for_loop155\n",
      "                                        ##   in Loop: Header=BB0_27 Depth=3\n",
      "\tvcmpnleps\tLCPI0_3(%rip), %ymm13, %ymm15\n",
      "\tvandps\t%ymm1, %ymm15, %ymm10\n",
      "\tvmovmskps\t%ymm10, %ecx\n",
      "\tvxorps\t%xmm12, %xmm12, %xmm12\n",
      "\ttestl\t%ecx, %ecx\n",
      "\tje\tLBB0_29\n",
      "## BB#32:                               ## %safe_if_run_true177\n",
      "                                        ##   in Loop: Header=BB0_27 Depth=3\n",
      "\tvxorps\t%xmm11, %xmm11, %xmm11\n",
      "\tvmovaps\t%ymm10, %ymm12\n",
      "\tcmpl\t%edx, %ecx\n",
      "\tje\tLBB0_27\n",
      "LBB0_29:                                ## %safe_if_after_true176\n",
      "                                        ##   in Loop: Header=BB0_26 Depth=2\n",
      "\tvblendvps\t%ymm15, LCPI0_5(%rip), %ymm1, %ymm11\n",
      "\tvmovmskps\t%ymm11, %ecx\n",
      "\ttestl\t%ecx, %ecx\n",
      "\tjne\tLBB0_33\n",
      "## BB#30:                               ##   in Loop: Header=BB0_26 Depth=2\n",
      "\tvmovups\t352(%rsp), %ymm10       ## 32-byte Reload\n",
      "\tvmovups\t320(%rsp), %ymm9        ## 32-byte Reload\n",
      "\tvandnps\t%ymm1, %ymm12, %ymm11\n",
      "\tjmp\tLBB0_26\n",
      "LBB0_9:                                 ## %for_exit\n",
      "\taddq\t$408, %rsp              ## imm = 0x198\n",
      "\tpopq\t%rbx\n",
      "\tpopq\t%r14\n",
      "\tpopq\t%r15\n",
      "\tpopq\t%rbp\n",
      "\tvzeroupper\n",
      "\tretq\n",
      "\n",
      "\t.section\t__TEXT,__literal16,16byte_literals\n",
      "\t.align\t4\n",
      "LCPI1_0:\n",
      "\t.long\t0                       ## 0x0\n",
      "\t.long\t1                       ## 0x1\n",
      "\t.long\t2                       ## 0x2\n",
      "\t.long\t3                       ## 0x3\n",
      "LCPI1_1:\n",
      "\t.long\t4                       ## 0x4\n",
      "\t.long\t5                       ## 0x5\n",
      "\t.long\t6                       ## 0x6\n",
      "\t.long\t7                       ## 0x7\n",
      "LCPI1_2:\n",
      "\t.byte\t0                       ## 0x0\n",
      "\t.byte\t1                       ## 0x1\n",
      "\t.byte\t4                       ## 0x4\n",
      "\t.byte\t5                       ## 0x5\n",
      "\t.byte\t8                       ## 0x8\n",
      "\t.byte\t9                       ## 0x9\n",
      "\t.byte\t12                      ## 0xc\n",
      "\t.byte\t13                      ## 0xd\n",
      "\t.byte\t8                       ## 0x8\n",
      "\t.byte\t9                       ## 0x9\n",
      "\t.byte\t12                      ## 0xc\n",
      "\t.byte\t13                      ## 0xd\n",
      "\t.byte\t12                      ## 0xc\n",
      "\t.byte\t13                      ## 0xd\n",
      "\t.byte\t14                      ## 0xe\n",
      "\t.byte\t15                      ## 0xf\n",
      "LCPI1_4:\n",
      "\t.quad\t1                       ## 0x1\n",
      "\t.quad\t1                       ## 0x1\n",
      "\t.section\t__TEXT,__const\n",
      "\t.align\t5\n",
      "LCPI1_3:\n",
      "\t.long\t1082130432              ## float 4.000000e+00\n",
      "\t.long\t1082130432              ## float 4.000000e+00\n",
      "\t.long\t1082130432              ## float 4.000000e+00\n",
      "\t.long\t1082130432              ## float 4.000000e+00\n",
      "\t.long\t1082130432              ## float 4.000000e+00\n",
      "\t.long\t1082130432              ## float 4.000000e+00\n",
      "\t.long\t1082130432              ## float 4.000000e+00\n",
      "\t.long\t1082130432              ## float 4.000000e+00\n",
      "LCPI1_5:\n",
      "\t.space\t32\n",
      "\t.section\t__TEXT,__text,regular,pure_instructions\n",
      "\t.globl\t_ispc_func_1\n",
      "\t.align\t4, 0x90\n",
      "_ispc_func_1:                           ## @ispc_func_1\n",
      "## BB#0:                                ## %allocas\n",
      "\tpushq\t%rbp\n",
      "\tpushq\t%r14\n",
      "\tpushq\t%rbx\n",
      "\tsubq\t$320, %rsp              ## imm = 0x140\n",
      "\tvmovss\t%xmm2, 28(%rsp)         ## 4-byte Spill\n",
      "\tvmovss\t%xmm0, 24(%rsp)         ## 4-byte Spill\n",
      "\ttestq\t%r9, %r9\n",
      "\tleaq\t1(%r9), %r10\n",
      "\tmovl\t$1, %r11d\n",
      "\tcmovleq\t%r11, %r10\n",
      "\tleal\t1(%r8), %r9d\n",
      "\tmovl\t%r8d, %eax\n",
      "\tsarl\t$31, %eax\n",
      "\tshrl\t$29, %eax\n",
      "\taddl\t%r8d, %eax\n",
      "\tandl\t$-8, %eax\n",
      "\tmovl\t%r8d, %edx\n",
      "\tsubl\t%eax, %edx\n",
      "\tnegl\t%edx\n",
      "\tleal\t1(%r8,%rdx), %ebp\n",
      "\tvpermilps\t$0, %xmm1, %xmm0 ## xmm0 = xmm1[0,0,0,0]\n",
      "\tvinsertf128\t$1, %xmm0, %ymm0, %ymm0\n",
      "\tvmovups\t%ymm0, 128(%rsp)        ## 32-byte Spill\n",
      "\tvpermilps\t$0, %xmm3, %xmm0 ## xmm0 = xmm3[0,0,0,0]\n",
      "\tvinsertf128\t$1, %xmm0, %ymm0, %ymm0\n",
      "\tvmovups\t%ymm0, 96(%rsp)         ## 32-byte Spill\n",
      "\tvmovq\t%rcx, %xmm0\n",
      "\tvpcmpeqd\t%xmm1, %xmm1, %xmm1\n",
      "\tvinsertf128\t$1, %xmm1, %ymm1, %ymm2\n",
      "\tvunpcklpd\t%xmm0, %xmm0, %xmm0 ## xmm0 = xmm0[0,0]\n",
      "\tvinsertf128\t$1, %xmm0, %ymm0, %ymm5\n",
      "\tmovl\t$-1, %r8d\n",
      "\tvinsertf128\t$1, %xmm1, %ymm1, %ymm0\n",
      "\tvmovups\t%ymm0, 64(%rsp)         ## 32-byte Spill\n",
      "\tvmovdqa\tLCPI1_2(%rip), %xmm4    ## xmm4 = [0,1,4,5,8,9,12,13,8,9,12,13,12,13,14,15]\n",
      "                                        ## implicit-def: YMM0\n",
      "\tvmovups\t%ymm0, -32(%rsp)        ## 32-byte Spill\n",
      "                                        ## implicit-def: YMM0\n",
      "\tvmovups\t%ymm0, -64(%rsp)        ## 32-byte Spill\n",
      "                                        ## implicit-def: YMM0\n",
      "\tvmovups\t%ymm0, 256(%rsp)        ## 32-byte Spill\n",
      "                                        ## implicit-def: YMM0\n",
      "\tvmovups\t%ymm0, 224(%rsp)        ## 32-byte Spill\n",
      "\tjmp\tLBB1_1\n",
      "LBB1_23:                                ## %for_exit156\n",
      "                                        ##   in Loop: Header=BB1_1 Depth=1\n",
      "\tdecl\t%r14d\n",
      "\tmovl\t%esi, %eax\n",
      "\timull\t%r14d, %eax\n",
      "\tvpextrq\t$1, %xmm9, %rdx\n",
      "\tvcvtsi2ssq\t%rdx, %xmm0, %xmm1\n",
      "\tvmovq\t%xmm9, %rdx\n",
      "\tvcvtsi2ssq\t%rdx, %xmm0, %xmm3\n",
      "\tvinsertps\t$16, %xmm1, %xmm3, %xmm1 ## xmm1 = xmm3[0],xmm1[0],xmm3[2,3]\n",
      "\tvmovq\t%xmm0, %rdx\n",
      "\tvcvtsi2ssq\t%rdx, %xmm0, %xmm3\n",
      "\tvinsertps\t$32, %xmm3, %xmm1, %xmm1 ## xmm1 = xmm1[0,1],xmm3[0],xmm1[3]\n",
      "\tvpextrq\t$1, %xmm0, %rdx\n",
      "\tvcvtsi2ssq\t%rdx, %xmm0, %xmm0\n",
      "\tvinsertps\t$48, %xmm0, %xmm1, %xmm0 ## xmm0 = xmm1[0,1,2],xmm0[0]\n",
      "\tvpextrq\t$1, %xmm14, %rdx\n",
      "\tvcvtsi2ssq\t%rdx, %xmm0, %xmm1\n",
      "\tvmovq\t%xmm14, %rdx\n",
      "\tvcvtsi2ssq\t%rdx, %xmm0, %xmm3\n",
      "\tvinsertps\t$16, %xmm1, %xmm3, %xmm1 ## xmm1 = xmm3[0],xmm1[0],xmm3[2,3]\n",
      "\tvmovq\t%xmm2, %rdx\n",
      "\tvcvtsi2ssq\t%rdx, %xmm0, %xmm3\n",
      "\tvinsertps\t$32, %xmm3, %xmm1, %xmm1 ## xmm1 = xmm1[0,1],xmm3[0],xmm1[3]\n",
      "\tvpextrq\t$1, %xmm2, %rdx\n",
      "\tvcvtsi2ssq\t%rdx, %xmm0, %xmm2\n",
      "\tvinsertps\t$48, %xmm2, %xmm1, %xmm1 ## xmm1 = xmm1[0,1,2],xmm2[0]\n",
      "\tvinsertf128\t$1, %xmm0, %ymm1, %ymm0\n",
      "\taddl\t%eax, %ecx\n",
      "\tleal\t-4(,%rcx,4), %eax\n",
      "\tcltq\n",
      "\tvmovups\t-96(%rsp), %ymm1        ## 32-byte Reload\n",
      "\tvmaskmovps\t%ymm0, %ymm1, (%rdi,%rax)\n",
      "\tvmovups\t32(%rsp), %ymm2         ## 32-byte Reload\n",
      "\t.align\t4, 0x90\n",
      "LBB1_1:                                 ## %for_test\n",
      "                                        ## =>This Loop Header: Depth=1\n",
      "                                        ##     Child Loop BB1_6 Depth 2\n",
      "                                        ##       Child Loop BB1_22 Depth 3\n",
      "                                        ##         Child Loop BB1_8 Depth 4\n",
      "                                        ##     Child Loop BB1_15 Depth 2\n",
      "                                        ##       Child Loop BB1_16 Depth 3\n",
      "\tmovq\t%r11, %r14\n",
      "\tcmpq\t%r10, %r14\n",
      "\tmovl\t$0, %eax\n",
      "\tcmovel\t%r8d, %eax\n",
      "\tvmovd\t%eax, %xmm0\n",
      "\tvpermilps\t$0, %xmm0, %xmm0 ## xmm0 = xmm0[0,0,0,0]\n",
      "\tvinsertf128\t$1, %xmm0, %ymm0, %ymm0\n",
      "\tvandnps\t%ymm2, %ymm0, %ymm2\n",
      "\tvmovmskps\t%ymm2, %eax\n",
      "\ttestl\t%eax, %eax\n",
      "\tje\tLBB1_4\n",
      "## BB#2:                                ## %for_loop\n",
      "                                        ##   in Loop: Header=BB1_1 Depth=1\n",
      "\tmovl\t$1, %ecx\n",
      "\tcmpl\t$2, %ebp\n",
      "\tjl\tLBB1_3\n",
      "## BB#5:                                ## %foreach_full_body.lr.ph\n",
      "                                        ##   in Loop: Header=BB1_1 Depth=1\n",
      "\tvmovups\t%ymm2, 32(%rsp)         ## 32-byte Spill\n",
      "\tvxorps\t%xmm0, %xmm0, %xmm0\n",
      "\tvcvtsi2ssq\t%r14, %xmm0, %xmm0\n",
      "\tvmulss\t28(%rsp), %xmm0, %xmm0  ## 4-byte Folded Reload\n",
      "\tvaddss\t24(%rsp), %xmm0, %xmm0  ## 4-byte Folded Reload\n",
      "\tvpermilps\t$0, %xmm0, %xmm0 ## xmm0 = xmm0[0,0,0,0]\n",
      "\tvinsertf128\t$1, %xmm0, %ymm0, %ymm0\n",
      "\tvmovups\t%ymm0, 192(%rsp)        ## 32-byte Spill\n",
      "\tleaq\t-1(%r14), %rax\n",
      "\timulq\t%rsi, %rax\n",
      "\tmovl\t$1, %ecx\n",
      "\t.align\t4, 0x90\n",
      "LBB1_6:                                 ## %foreach_full_body\n",
      "                                        ##   Parent Loop BB1_1 Depth=1\n",
      "                                        ## =>  This Loop Header: Depth=2\n",
      "                                        ##       Child Loop BB1_22 Depth 3\n",
      "                                        ##         Child Loop BB1_8 Depth 4\n",
      "\tvmovd\t%ecx, %xmm0\n",
      "\tvpermilps\t$0, %xmm0, %xmm0 ## xmm0 = xmm0[0,0,0,0]\n",
      "\tvpaddd\tLCPI1_0(%rip), %xmm0, %xmm1\n",
      "\tvpaddd\tLCPI1_1(%rip), %xmm0, %xmm0\n",
      "\tvinsertf128\t$1, %xmm0, %ymm1, %ymm0\n",
      "\tvcvtdq2ps\t%ymm0, %ymm0\n",
      "\tvmulps\t96(%rsp), %ymm0, %ymm0  ## 32-byte Folded Reload\n",
      "\tvaddps\t128(%rsp), %ymm0, %ymm14 ## 32-byte Folded Reload\n",
      "\tvmovups\t%ymm14, 160(%rsp)       ## 32-byte Spill\n",
      "\tvxorps\t%xmm9, %xmm9, %xmm9\n",
      "\tvxorps\t%xmm0, %xmm0, %xmm0\n",
      "\tvmovups\t192(%rsp), %ymm12       ## 32-byte Reload\n",
      "\tvmovups\t64(%rsp), %ymm13        ## 32-byte Reload\n",
      "\tjmp\tLBB1_22\n",
      "\t.align\t4, 0x90\n",
      "LBB1_21:                                ## %if_done\n",
      "                                        ##   in Loop: Header=BB1_22 Depth=3\n",
      "\tvandnps\t%ymm1, %ymm10, %ymm13\n",
      "LBB1_22:                                ## %for_test52.outer\n",
      "                                        ##   Parent Loop BB1_1 Depth=1\n",
      "                                        ##     Parent Loop BB1_6 Depth=2\n",
      "                                        ## =>    This Loop Header: Depth=3\n",
      "                                        ##         Child Loop BB1_8 Depth 4\n",
      "\tvmovups\t%ymm12, 288(%rsp)       ## 32-byte Spill\n",
      "\tvmulps\t%ymm12, %ymm12, %ymm6\n",
      "\tvmulps\t%ymm14, %ymm14, %ymm15\n",
      "\tvaddps\t%ymm6, %ymm15, %ymm7\n",
      "\t.align\t4, 0x90\n",
      "LBB1_8:                                 ## %for_test52\n",
      "                                        ##   Parent Loop BB1_1 Depth=1\n",
      "                                        ##     Parent Loop BB1_6 Depth=2\n",
      "                                        ##       Parent Loop BB1_22 Depth=3\n",
      "                                        ## =>      This Inner Loop Header: Depth=4\n",
      "\tvextractf128\t$1, %ymm9, %xmm11\n",
      "\tvextractf128\t$1, %ymm5, %xmm1\n",
      "\tvpcmpgtq\t%xmm11, %xmm1, %xmm3\n",
      "\tvpcmpgtq\t%xmm9, %xmm5, %xmm2\n",
      "\tvshufps\t$-120, %xmm3, %xmm2, %xmm2 ## xmm2 = xmm2[0,2],xmm3[0,2]\n",
      "\tvpshufb\t%xmm4, %xmm2, %xmm2\n",
      "\tvextractf128\t$1, %ymm0, %xmm8\n",
      "\tvpcmpgtq\t%xmm8, %xmm1, %xmm1\n",
      "\tvpcmpgtq\t%xmm0, %xmm5, %xmm3\n",
      "\tvshufps\t$-120, %xmm1, %xmm3, %xmm1 ## xmm1 = xmm3[0,2],xmm1[0,2]\n",
      "\tvpshufb\t%xmm4, %xmm1, %xmm1\n",
      "\tvpunpcklqdq\t%xmm1, %xmm2, %xmm1 ## xmm1 = xmm2[0],xmm1[0]\n",
      "\tvpmovzxwd\t%xmm1, %xmm2\n",
      "\tvpslld\t$31, %xmm2, %xmm2\n",
      "\tvpsrad\t$31, %xmm2, %xmm2\n",
      "\tvpunpckhwd\t%xmm1, %xmm1, %xmm1 ## xmm1 = xmm1[4,4,5,5,6,6,7,7]\n",
      "\tvpslld\t$31, %xmm1, %xmm1\n",
      "\tvpsrad\t$31, %xmm1, %xmm1\n",
      "\tvinsertf128\t$1, %xmm1, %ymm2, %ymm1\n",
      "\tvandps\t%ymm13, %ymm1, %ymm1\n",
      "\tvmovmskps\t%ymm1, %ebx\n",
      "\ttestl\t%ebx, %ebx\n",
      "\tje\tLBB1_12\n",
      "## BB#9:                                ## %for_loop54\n",
      "                                        ##   in Loop: Header=BB1_8 Depth=4\n",
      "\tvcmpnleps\tLCPI1_3(%rip), %ymm7, %ymm12\n",
      "\tvandps\t%ymm1, %ymm12, %ymm3\n",
      "\tvmovmskps\t%ymm3, %edx\n",
      "\tvxorps\t%xmm10, %xmm10, %xmm10\n",
      "\ttestl\t%edx, %edx\n",
      "\tje\tLBB1_10\n",
      "## BB#7:                                ## %safe_if_run_true\n",
      "                                        ##   in Loop: Header=BB1_8 Depth=4\n",
      "\tvxorps\t%xmm13, %xmm13, %xmm13\n",
      "\tvmovaps\t%ymm3, %ymm10\n",
      "\tcmpl\t%ebx, %edx\n",
      "\tje\tLBB1_8\n",
      "LBB1_10:                                ## %safe_if_after_true\n",
      "                                        ##   in Loop: Header=BB1_22 Depth=3\n",
      "\tvblendvps\t%ymm12, LCPI1_5(%rip), %ymm1, %ymm7\n",
      "\tvmovmskps\t%ymm7, %edx\n",
      "\ttestl\t%edx, %edx\n",
      "\tje\tLBB1_11\n",
      "## BB#20:                               ## %safe_if_run_false\n",
      "                                        ##   in Loop: Header=BB1_22 Depth=3\n",
      "\tvsubps\t%ymm15, %ymm6, %ymm2\n",
      "\tvmovups\t224(%rsp), %ymm6        ## 32-byte Reload\n",
      "\tvblendvps\t%ymm7, %ymm2, %ymm6, %ymm6\n",
      "\tvmovups\t%ymm6, 224(%rsp)        ## 32-byte Spill\n",
      "\tvmovups\t288(%rsp), %ymm12       ## 32-byte Reload\n",
      "\tvaddps\t%ymm12, %ymm12, %ymm2\n",
      "\tvmulps\t%ymm2, %ymm14, %ymm2\n",
      "\tvmovups\t256(%rsp), %ymm3        ## 32-byte Reload\n",
      "\tvblendvps\t%ymm7, %ymm2, %ymm3, %ymm3\n",
      "\tvmovups\t%ymm3, 256(%rsp)        ## 32-byte Spill\n",
      "\tvaddps\t192(%rsp), %ymm6, %ymm2 ## 32-byte Folded Reload\n",
      "\tvblendvps\t%ymm7, %ymm2, %ymm12, %ymm12\n",
      "\tvaddps\t160(%rsp), %ymm3, %ymm2 ## 32-byte Folded Reload\n",
      "\tvblendvps\t%ymm7, %ymm2, %ymm14, %ymm14\n",
      "\tvmovdqa\tLCPI1_4(%rip), %xmm2    ## xmm2 = [1,1]\n",
      "\tvmovdqa\t%xmm2, %xmm6\n",
      "\tvpaddq\t%xmm6, %xmm8, %xmm2\n",
      "\tvpaddq\t%xmm6, %xmm0, %xmm3\n",
      "\tvinsertf128\t$1, %xmm2, %ymm3, %ymm8\n",
      "\tvpaddq\t%xmm6, %xmm11, %xmm3\n",
      "\tvpaddq\t%xmm6, %xmm9, %xmm6\n",
      "\tvinsertf128\t$1, %xmm3, %ymm6, %ymm3\n",
      "\tvunpcklps\t%xmm7, %xmm7, %xmm6 ## xmm6 = xmm7[0,0,1,1]\n",
      "\tvunpckhps\t%xmm7, %xmm7, %xmm2 ## xmm2 = xmm7[2,2,3,3]\n",
      "\tvinsertf128\t$1, %xmm2, %ymm6, %ymm2\n",
      "\tvextractf128\t$1, %ymm7, %xmm6\n",
      "\tvblendvps\t%ymm2, %ymm3, %ymm9, %ymm9\n",
      "\tvunpcklps\t%xmm6, %xmm6, %xmm2 ## xmm2 = xmm6[0,0,1,1]\n",
      "\tvunpckhps\t%xmm6, %xmm6, %xmm3 ## xmm3 = xmm6[2,2,3,3]\n",
      "\tvinsertf128\t$1, %xmm3, %ymm2, %ymm2\n",
      "\tvblendvps\t%ymm2, %ymm8, %ymm0, %ymm0\n",
      "\tjmp\tLBB1_21\n",
      "\t.align\t4, 0x90\n",
      "LBB1_11:                                ##   in Loop: Header=BB1_22 Depth=3\n",
      "\tvmovups\t288(%rsp), %ymm12       ## 32-byte Reload\n",
      "\tjmp\tLBB1_21\n",
      "\t.align\t4, 0x90\n",
      "LBB1_12:                                ## %for_exit55\n",
      "                                        ##   in Loop: Header=BB1_6 Depth=2\n",
      "\tvpextrq\t$1, %xmm0, %rdx\n",
      "\tvcvtsi2ssq\t%rdx, %xmm0, %xmm1\n",
      "\tvmovq\t%xmm0, %rdx\n",
      "\tvcvtsi2ssq\t%rdx, %xmm0, %xmm0\n",
      "\tvinsertps\t$16, %xmm1, %xmm0, %xmm0 ## xmm0 = xmm0[0],xmm1[0],xmm0[2,3]\n",
      "\tvmovq\t%xmm8, %rdx\n",
      "\tvcvtsi2ssq\t%rdx, %xmm0, %xmm1\n",
      "\tvinsertps\t$32, %xmm1, %xmm0, %xmm0 ## xmm0 = xmm0[0,1],xmm1[0],xmm0[3]\n",
      "\tvpextrq\t$1, %xmm8, %rdx\n",
      "\tvcvtsi2ssq\t%rdx, %xmm0, %xmm1\n",
      "\tvinsertps\t$48, %xmm1, %xmm0, %xmm0 ## xmm0 = xmm0[0,1,2],xmm1[0]\n",
      "\tvpextrq\t$1, %xmm9, %rdx\n",
      "\tvcvtsi2ssq\t%rdx, %xmm0, %xmm1\n",
      "\tvmovq\t%xmm9, %rdx\n",
      "\tvcvtsi2ssq\t%rdx, %xmm0, %xmm2\n",
      "\tvinsertps\t$16, %xmm1, %xmm2, %xmm1 ## xmm1 = xmm2[0],xmm1[0],xmm2[2,3]\n",
      "\tvmovq\t%xmm11, %rdx\n",
      "\tvcvtsi2ssq\t%rdx, %xmm0, %xmm2\n",
      "\tvinsertps\t$32, %xmm2, %xmm1, %xmm1 ## xmm1 = xmm1[0,1],xmm2[0],xmm1[3]\n",
      "\tvpextrq\t$1, %xmm11, %rdx\n",
      "\tvcvtsi2ssq\t%rdx, %xmm0, %xmm2\n",
      "\tvinsertps\t$48, %xmm2, %xmm1, %xmm1 ## xmm1 = xmm1[0,1,2],xmm2[0]\n",
      "\tleal\t(%rcx,%rax), %edx\n",
      "\tleal\t-4(,%rdx,4), %edx\n",
      "\tmovslq\t%edx, %rdx\n",
      "\tvmovups\t%xmm1, (%rdi,%rdx)\n",
      "\tvmovups\t%xmm0, 16(%rdi,%rdx)\n",
      "\taddl\t$8, %ecx\n",
      "\tcmpl\t%ebp, %ecx\n",
      "\tjl\tLBB1_6\n",
      "\tjmp\tLBB1_13\n",
      "\t.align\t4, 0x90\n",
      "LBB1_3:                                 ##   in Loop: Header=BB1_1 Depth=1\n",
      "\tvmovups\t%ymm2, 32(%rsp)         ## 32-byte Spill\n",
      "LBB1_13:                                ## %partial_inner_all_outer\n",
      "                                        ##   in Loop: Header=BB1_1 Depth=1\n",
      "\tleaq\t1(%r14), %r11\n",
      "\tcmpl\t%r9d, %ecx\n",
      "\tvmovups\t32(%rsp), %ymm2         ## 32-byte Reload\n",
      "\tjge\tLBB1_1\n",
      "## BB#14:                               ## %partial_inner_only\n",
      "                                        ##   in Loop: Header=BB1_1 Depth=1\n",
      "\tvmovd\t%ecx, %xmm0\n",
      "\tvpermilps\t$0, %xmm0, %xmm0 ## xmm0 = xmm0[0,0,0,0]\n",
      "\tvpaddd\tLCPI1_0(%rip), %xmm0, %xmm1\n",
      "\tvpaddd\tLCPI1_1(%rip), %xmm0, %xmm0\n",
      "\tvinsertf128\t$1, %xmm0, %ymm1, %ymm2\n",
      "\tvmovd\t%r9d, %xmm3\n",
      "\tvpermilps\t$0, %xmm3, %xmm3 ## xmm3 = xmm3[0,0,0,0]\n",
      "\tvpcmpgtd\t%xmm0, %xmm3, %xmm0\n",
      "\tvpcmpgtd\t%xmm1, %xmm3, %xmm1\n",
      "\tvinsertf128\t$1, %xmm0, %ymm1, %ymm13\n",
      "\tvmovups\t%ymm13, -96(%rsp)       ## 32-byte Spill\n",
      "\tvxorps\t%xmm0, %xmm0, %xmm0\n",
      "\tvcvtsi2ssq\t%r14, %xmm0, %xmm0\n",
      "\tvmulss\t28(%rsp), %xmm0, %xmm0  ## 4-byte Folded Reload\n",
      "\tvaddss\t24(%rsp), %xmm0, %xmm0  ## 4-byte Folded Reload\n",
      "\tvpermilps\t$0, %xmm0, %xmm0 ## xmm0 = xmm0[0,0,0,0]\n",
      "\tvinsertf128\t$1, %xmm0, %ymm0, %ymm11\n",
      "\tvmovups\t%ymm11, 192(%rsp)       ## 32-byte Spill\n",
      "\tvcvtdq2ps\t%ymm2, %ymm0\n",
      "\tvmulps\t96(%rsp), %ymm0, %ymm0  ## 32-byte Folded Reload\n",
      "\tvaddps\t128(%rsp), %ymm0, %ymm0 ## 32-byte Folded Reload\n",
      "\tvmovups\t%ymm0, 160(%rsp)        ## 32-byte Spill\n",
      "\tvxorps\t%xmm14, %xmm14, %xmm14\n",
      "\tvxorps\t%xmm9, %xmm9, %xmm9\n",
      "\tvmovaps\t%ymm0, %ymm10\n",
      "\tvmovaps\t%ymm11, %ymm12\n",
      "\tjmp\tLBB1_15\n",
      "\t.align\t4, 0x90\n",
      "LBB1_25:                                ## %safe_if_run_false196\n",
      "                                        ##   in Loop: Header=BB1_15 Depth=2\n",
      "\tvsubps\t%ymm8, %ymm6, %ymm6\n",
      "\tvmovups\t-64(%rsp), %ymm8        ## 32-byte Reload\n",
      "\tvblendvps\t%ymm13, %ymm6, %ymm8, %ymm8\n",
      "\tvmovups\t%ymm8, -64(%rsp)        ## 32-byte Spill\n",
      "\tvmovups\t288(%rsp), %ymm12       ## 32-byte Reload\n",
      "\tvaddps\t%ymm12, %ymm12, %ymm6\n",
      "\tvmovaps\t%ymm11, %ymm10\n",
      "\tvmulps\t%ymm6, %ymm10, %ymm6\n",
      "\tvmovups\t-32(%rsp), %ymm7        ## 32-byte Reload\n",
      "\tvblendvps\t%ymm13, %ymm6, %ymm7, %ymm7\n",
      "\tvmovups\t%ymm7, -32(%rsp)        ## 32-byte Spill\n",
      "\tvaddps\t192(%rsp), %ymm8, %ymm6 ## 32-byte Folded Reload\n",
      "\tvblendvps\t%ymm13, %ymm6, %ymm12, %ymm12\n",
      "\tvaddps\t160(%rsp), %ymm7, %ymm6 ## 32-byte Folded Reload\n",
      "\tvblendvps\t%ymm13, %ymm6, %ymm10, %ymm10\n",
      "\tvmovdqa\tLCPI1_4(%rip), %xmm6    ## xmm6 = [1,1]\n",
      "\tvmovdqa\t%xmm6, %xmm7\n",
      "\tvpaddq\t%xmm7, %xmm0, %xmm0\n",
      "\tvpaddq\t%xmm7, %xmm9, %xmm6\n",
      "\tvinsertf128\t$1, %xmm0, %ymm6, %ymm0\n",
      "\tvpaddq\t%xmm7, %xmm2, %xmm2\n",
      "\tvpaddq\t%xmm7, %xmm14, %xmm6\n",
      "\tvinsertf128\t$1, %xmm2, %ymm6, %ymm2\n",
      "\tvunpcklps\t%xmm13, %xmm13, %xmm6 ## xmm6 = xmm13[0,0,1,1]\n",
      "\tvunpckhps\t%xmm13, %xmm13, %xmm7 ## xmm7 = xmm13[2,2,3,3]\n",
      "\tvinsertf128\t$1, %xmm7, %ymm6, %ymm6\n",
      "\tvextractf128\t$1, %ymm13, %xmm7\n",
      "\tvblendvps\t%ymm6, %ymm2, %ymm14, %ymm14\n",
      "\tvunpcklps\t%xmm7, %xmm7, %xmm2 ## xmm2 = xmm7[0,0,1,1]\n",
      "\tvunpckhps\t%xmm7, %xmm7, %xmm6 ## xmm6 = xmm7[2,2,3,3]\n",
      "\tvinsertf128\t$1, %xmm6, %ymm2, %ymm2\n",
      "\tvblendvps\t%ymm2, %ymm0, %ymm9, %ymm9\n",
      "\tvandnps\t%ymm1, %ymm3, %ymm13\n",
      "LBB1_15:                                ## %for_test153.outer\n",
      "                                        ##   Parent Loop BB1_1 Depth=1\n",
      "                                        ## =>  This Loop Header: Depth=2\n",
      "                                        ##       Child Loop BB1_16 Depth 3\n",
      "\tvmovups\t%ymm12, 288(%rsp)       ## 32-byte Spill\n",
      "\tvmulps\t%ymm12, %ymm12, %ymm6\n",
      "\tvmulps\t%ymm10, %ymm10, %ymm8\n",
      "\tvmovaps\t%ymm10, %ymm11\n",
      "\tvaddps\t%ymm6, %ymm8, %ymm15\n",
      "\t.align\t4, 0x90\n",
      "LBB1_16:                                ## %for_test153\n",
      "                                        ##   Parent Loop BB1_1 Depth=1\n",
      "                                        ##     Parent Loop BB1_15 Depth=2\n",
      "                                        ## =>    This Inner Loop Header: Depth=3\n",
      "\tvextractf128\t$1, %ymm14, %xmm2\n",
      "\tvextractf128\t$1, %ymm5, %xmm1\n",
      "\tvpcmpgtq\t%xmm2, %xmm1, %xmm0\n",
      "\tvpcmpgtq\t%xmm14, %xmm5, %xmm3\n",
      "\tvshufps\t$-120, %xmm0, %xmm3, %xmm0 ## xmm0 = xmm3[0,2],xmm0[0,2]\n",
      "\tvpshufb\t%xmm4, %xmm0, %xmm3\n",
      "\tvextractf128\t$1, %ymm9, %xmm0\n",
      "\tvpcmpgtq\t%xmm0, %xmm1, %xmm1\n",
      "\tvpcmpgtq\t%xmm9, %xmm5, %xmm7\n",
      "\tvshufps\t$-120, %xmm1, %xmm7, %xmm1 ## xmm1 = xmm7[0,2],xmm1[0,2]\n",
      "\tvpshufb\t%xmm4, %xmm1, %xmm1\n",
      "\tvpunpcklqdq\t%xmm1, %xmm3, %xmm1 ## xmm1 = xmm3[0],xmm1[0]\n",
      "\tvpmovzxwd\t%xmm1, %xmm3\n",
      "\tvpslld\t$31, %xmm3, %xmm3\n",
      "\tvpsrad\t$31, %xmm3, %xmm3\n",
      "\tvpunpckhwd\t%xmm1, %xmm1, %xmm1 ## xmm1 = xmm1[4,4,5,5,6,6,7,7]\n",
      "\tvpslld\t$31, %xmm1, %xmm1\n",
      "\tvpsrad\t$31, %xmm1, %xmm1\n",
      "\tvinsertf128\t$1, %xmm1, %ymm3, %ymm1\n",
      "\tvandps\t%ymm13, %ymm1, %ymm1\n",
      "\tvmovmskps\t%ymm1, %eax\n",
      "\ttestl\t%eax, %eax\n",
      "\tje\tLBB1_23\n",
      "## BB#17:                               ## %for_loop155\n",
      "                                        ##   in Loop: Header=BB1_16 Depth=3\n",
      "\tvcmpnleps\tLCPI1_3(%rip), %ymm15, %ymm12\n",
      "\tvandps\t%ymm1, %ymm12, %ymm10\n",
      "\tvmovmskps\t%ymm10, %edx\n",
      "\tvpxor\t%xmm3, %xmm3, %xmm3\n",
      "\ttestl\t%edx, %edx\n",
      "\tje\tLBB1_18\n",
      "## BB#24:                               ## %safe_if_run_true177\n",
      "                                        ##   in Loop: Header=BB1_16 Depth=3\n",
      "\tvxorps\t%xmm13, %xmm13, %xmm13\n",
      "\tvmovaps\t%ymm10, %ymm3\n",
      "\tcmpl\t%eax, %edx\n",
      "\tje\tLBB1_16\n",
      "LBB1_18:                                ## %safe_if_after_true176\n",
      "                                        ##   in Loop: Header=BB1_15 Depth=2\n",
      "\tvblendvps\t%ymm12, LCPI1_5(%rip), %ymm1, %ymm13\n",
      "\tvmovmskps\t%ymm13, %eax\n",
      "\ttestl\t%eax, %eax\n",
      "\tjne\tLBB1_25\n",
      "## BB#19:                               ##   in Loop: Header=BB1_15 Depth=2\n",
      "\tvmovaps\t%ymm11, %ymm10\n",
      "\tvmovups\t288(%rsp), %ymm12       ## 32-byte Reload\n",
      "\tvandnps\t%ymm1, %ymm3, %ymm13\n",
      "\tjmp\tLBB1_15\n",
      "LBB1_4:                                 ## %for_exit\n",
      "\taddq\t$320, %rsp              ## imm = 0x140\n",
      "\tpopq\t%rbx\n",
      "\tpopq\t%r14\n",
      "\tpopq\t%rbp\n",
      "\tvzeroupper\n",
      "\tretq\n",
      "\n",
      "\n",
      ".subsections_via_symbols\n"
     ]
    }
   ],
   "source": [
    "ISPC.ispc_native(func_code, func.file.compile_opts)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "collapsed": false,
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "; ModuleID = '<stdin>'\n",
      "target datalayout = \"e-m:o-i64:64-f80:128-n8:16:32:64-S128\"\n",
      "target triple = \"x86_64-apple-darwin13.4.0\"\n",
      "\n",
      "; Function Attrs: nounwind readnone\n",
      "declare i32 @llvm.x86.avx.movmsk.ps.256(<8 x float>) #0\n",
      "\n",
      "; Function Attrs: nounwind\n",
      "declare void @llvm.x86.avx.maskstore.ps.256(i8*, <8 x float>, <8 x float>) #1\n",
      "\n",
      "; Function Attrs: nounwind readnone\n",
      "declare <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float>, <8 x float>, <8 x float>) #0\n",
      "\n",
      "; Function Attrs: nounwind\n",
      "define void @ispc_func_1___unfunfun_3C_unf_3E_unIunIunIunIunIunfunf(float %x0, float %y0, float* noalias nocapture %output, i64 %output__len__1, i64 %output__len__2, i64 %max_iters, i64 %height, i64 %width, float %dx, float %dy, <8 x i32> %__mask) #1 {\n",
      "allocas:\n",
      "  %floatmask.i = bitcast <8 x i32> %__mask to <8 x float>\n",
      "  %v.i = tail call i32 @llvm.x86.avx.movmsk.ps.256(<8 x float> %floatmask.i) #0\n",
      "  %cmp.i = icmp eq i32 %v.i, 255\n",
      "  %lessequal__width_load = icmp sgt i64 %width, 0\n",
      "  %width.op = add i64 %width, 1\n",
      "  %add__gensym318_stop_ = select i1 %lessequal__width_load, i64 %width.op, i64 1\n",
      "  %add_height_load_ = add i64 %height, 1\n",
      "  %add_height_load__to_int32 = trunc i64 %add_height_load_ to i32\n",
      "  %nitems = add i32 %add_height_load__to_int32, -1\n",
      "  %nextras = srem i32 %nitems, 8\n",
      "  %aligned_end = sub i32 %add_height_load__to_int32, %nextras\n",
      "  %before_aligned_end44888 = icmp sgt i32 %aligned_end, 1\n",
      "  %y0_load_broadcast_init = insertelement <8 x float> undef, float %y0, i32 0\n",
      "  %y0_load_broadcast = shufflevector <8 x float> %y0_load_broadcast_init, <8 x float> undef, <8 x i32> zeroinitializer\n",
      "  %dy_load_broadcast_init = insertelement <8 x float> undef, float %dy, i32 0\n",
      "  %dy_load_broadcast = shufflevector <8 x float> %dy_load_broadcast_init, <8 x float> undef, <8 x i32> zeroinitializer\n",
      "  %max_iters_load_broadcast_init = insertelement <8 x i64> undef, i64 %max_iters, i32 0\n",
      "  %max_iters_load_broadcast = shufflevector <8 x i64> %max_iters_load_broadcast_init, <8 x i64> undef, <8 x i32> zeroinitializer\n",
      "  %output_load_ptr2int_2void = bitcast float* %output to i8*\n",
      "  br i1 %cmp.i, label %for_test.outer, label %for_test288.outer\n",
      "\n",
      "for_test.outer:                                   ; preds = %for_exit156, %allocas\n",
      "  %blend.i.i795850.ph = phi <8 x float> [ %blend.i.i795851.ph, %for_exit156 ], [ undef, %allocas ]\n",
      "  %blend.i.i798847.ph = phi <8 x float> [ %blend.i.i798848.ph, %for_exit156 ], [ undef, %allocas ]\n",
      "  %blend.i.i826837.ph = phi <8 x float> [ %blend.i.i826838.lcssa.lcssa, %for_exit156 ], [ undef, %allocas ]\n",
      "  %blend.i.i833.ph = phi <8 x float> [ %blend.i.i834.lcssa.lcssa, %for_exit156 ], [ undef, %allocas ]\n",
      "  %_s40.0.ph = phi i64 [ %add__s40_load30_.lcssa, %for_exit156 ], [ 1, %allocas ]\n",
      "  %internal_mask_memory.0.ph = phi <8 x i32> [ %\"oldMask&test.lcssa882\", %for_exit156 ], [ <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>, %allocas ]\n",
      "  br i1 %before_aligned_end44888, label %for_test.us, label %for_test\n",
      "\n",
      "for_test.us:                                      ; preds = %partial_inner_all_outer.us, %for_test.outer\n",
      "  %blend.i.i826837.us = phi <8 x float> [ %blend.i.i826839.ph.us, %partial_inner_all_outer.us ], [ %blend.i.i826837.ph, %for_test.outer ]\n",
      "  %blend.i.i833.us = phi <8 x float> [ %blend.i.i835.ph.us, %partial_inner_all_outer.us ], [ %blend.i.i833.ph, %for_test.outer ]\n",
      "  %_s40.0.us = phi i64 [ %add__s40_load30_.us, %partial_inner_all_outer.us ], [ %_s40.0.ph, %for_test.outer ]\n",
      "  %internal_mask_memory.0.us = phi <8 x i32> [ %\"oldMask&test.us\", %partial_inner_all_outer.us ], [ %internal_mask_memory.0.ph, %for_test.outer ]\n",
      "  %equal__s40_load_add__gensym318_stop_.us = icmp eq i64 %_s40.0.us, %add__gensym318_stop_\n",
      "  %equal__s40_load_add__gensym318_stop_to_i_bool.us = sext i1 %equal__s40_load_add__gensym318_stop_.us to i32\n",
      "  %equal__s40_load_add__gensym318_stop_to_i_bool_broadcast_init.us = insertelement <8 x i32> undef, i32 %equal__s40_load_add__gensym318_stop_to_i_bool.us, i32 0\n",
      "  %equal__s40_load_add__gensym318_stop_to_i_bool_broadcast.us = shufflevector <8 x i32> %equal__s40_load_add__gensym318_stop_to_i_bool_broadcast_init.us, <8 x i32> undef, <8 x i32> zeroinitializer\n",
      "  %val_load_logicalnot.i728.us = xor <8 x i32> %equal__s40_load_add__gensym318_stop_to_i_bool_broadcast.us, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>\n",
      "  %\"oldMask&test.us\" = and <8 x i32> %internal_mask_memory.0.us, %val_load_logicalnot.i728.us\n",
      "  %floatmask.i725.us = bitcast <8 x i32> %\"oldMask&test.us\" to <8 x float>\n",
      "  %v.i726.us = tail call i32 @llvm.x86.avx.movmsk.ps.256(<8 x float> %floatmask.i725.us) #0\n",
      "  %cmp.i727.us = icmp eq i32 %v.i726.us, 0\n",
      "  br i1 %cmp.i727.us, label %for_exit, label %foreach_full_body.lr.ph.us\n",
      "\n",
      "partial_inner_all_outer.us:                       ; preds = %for_exit55.us\n",
      "  %before_full_end.us = icmp slt i32 %new_counter.us, %add_height_load__to_int32\n",
      "  br i1 %before_full_end.us, label %partial_inner_only, label %for_test.us\n",
      "\n",
      "foreach_full_body.us:                             ; preds = %foreach_full_body.lr.ph.us, %for_exit55.us\n",
      "  %counter.1891.us = phi i32 [ 1, %foreach_full_body.lr.ph.us ], [ %new_counter.us, %for_exit55.us ]\n",
      "  %blend.i.i834890.us = phi <8 x float> [ %blend.i.i833.us, %foreach_full_body.lr.ph.us ], [ %blend.i.i835.ph.us, %for_exit55.us ]\n",
      "  %blend.i.i826838889.us = phi <8 x float> [ %blend.i.i826837.us, %foreach_full_body.lr.ph.us ], [ %blend.i.i826839.ph.us, %for_exit55.us ]\n",
      "  %smear_counter_init48.us = insertelement <8 x i32> undef, i32 %counter.1891.us, i32 0\n",
      "  %smear_counter49.us = shufflevector <8 x i32> %smear_counter_init48.us, <8 x i32> undef, <8 x i32> zeroinitializer\n",
      "  %iter_val50.us = add <8 x i32> %smear_counter49.us, <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>\n",
      "  %j_load51_to_float.us = sitofp <8 x i32> %iter_val50.us to <8 x float>\n",
      "  %mul_j_load51_to_float_dy_load_broadcast.us = fmul <8 x float> %dy_load_broadcast, %j_load51_to_float.us\n",
      "  %add_y0_load_broadcast_mul_j_load51_to_float_dy_load_broadcast.us = fadd <8 x float> %y0_load_broadcast, %mul_j_load51_to_float_dy_load_broadcast.us\n",
      "  br label %for_test52.outer.us\n",
      "\n",
      "for_test52.us:                                    ; preds = %for_test52.outer.us, %safe_if_run_true.us\n",
      "  %internal_mask_memory.2.us = phi <8 x i32> [ zeroinitializer, %safe_if_run_true.us ], [ %internal_mask_memory.2.ph.us, %for_test52.outer.us ]\n",
      "  %\"oldMask&test60.us\" = select <8 x i1> %less___i_8514_load_max_iters_load_broadcast.us, <8 x i32> %internal_mask_memory.2.us, <8 x i32> zeroinitializer\n",
      "  %floatmask.i722.us = bitcast <8 x i32> %\"oldMask&test60.us\" to <8 x float>\n",
      "  %v.i723.us = tail call i32 @llvm.x86.avx.movmsk.ps.256(<8 x float> %floatmask.i722.us) #0\n",
      "  %cmp.i724.us = icmp eq i32 %v.i723.us, 0\n",
      "  br i1 %cmp.i724.us, label %for_exit55.us, label %for_loop54.us\n",
      "\n",
      "for_loop54.us:                                    ; preds = %for_test52.us\n",
      "  %\"oldMask&test70.us\" = select <8 x i1> %less__add_mul___z_re_8512_load___z_re_8512_load67_mul___z_im_8513_load___z_im_8513_load68.us, <8 x i32> %\"oldMask&test60.us\", <8 x i32> zeroinitializer\n",
      "  %floatmask.i719.us = bitcast <8 x i32> %\"oldMask&test70.us\" to <8 x float>\n",
      "  %v.i720.us = tail call i32 @llvm.x86.avx.movmsk.ps.256(<8 x float> %floatmask.i719.us) #0\n",
      "  %cmp.i721.us = icmp eq i32 %v.i720.us, 0\n",
      "  br i1 %cmp.i721.us, label %safe_if_after_true.us, label %safe_if_run_true.us\n",
      "\n",
      "safe_if_run_true.us:                              ; preds = %for_loop54.us\n",
      "  %\"equal_finished&func_internal_mask&function_mask66.us\" = icmp eq i32 %v.i720.us, %v.i723.us\n",
      "  br i1 %\"equal_finished&func_internal_mask&function_mask66.us\", label %for_test52.us, label %safe_if_after_true.us\n",
      "\n",
      "safe_if_after_true.us:                            ; preds = %safe_if_run_true.us, %for_loop54.us\n",
      "  %break_lanes_memory58.1.us = phi <8 x i32> [ %\"oldMask&test70.us\", %safe_if_run_true.us ], [ zeroinitializer, %for_loop54.us ]\n",
      "  %0 = bitcast <8 x i32> %\"oldMask&test60.us\" to <8 x float>\n",
      "  %floatmask.i716.us = select <8 x i1> %less__add_mul___z_re_8512_load___z_re_8512_load67_mul___z_im_8513_load___z_im_8513_load68.us, <8 x float> zeroinitializer, <8 x float> %0\n",
      "  %v.i717.us = tail call i32 @llvm.x86.avx.movmsk.ps.256(<8 x float> %floatmask.i716.us) #0\n",
      "  %cmp.i718.us = icmp eq i32 %v.i717.us, 0\n",
      "  br i1 %cmp.i718.us, label %if_done.us, label %safe_if_run_false.us\n",
      "\n",
      "safe_if_run_false.us:                             ; preds = %safe_if_after_true.us\n",
      "  %sub_mul___z_re_8512_load82___z_re_8512_load83_mul___z_im_8513_load84___z_im_8513_load85.us = fsub <8 x float> %mul___z_re_8512_load___z_re_8512_load67.us, %mul___z_im_8513_load___z_im_8513_load68.us\n",
      "  %blend.i.i.us = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %blend.i.i835.ph.us, <8 x float> %sub_mul___z_re_8512_load82___z_re_8512_load83_mul___z_im_8513_load84___z_im_8513_load85.us, <8 x float> %floatmask.i716.us) #1\n",
      "  %mul____z_re_8512_load87.us = fmul <8 x float> %blend.i.i823828.ph.us, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>\n",
      "  %mul_mul____z_re_8512_load87___z_im_8513_load88.us = fmul <8 x float> %blend.i.i820830.ph.us, %mul____z_re_8512_load87.us\n",
      "  %blend.i.i826.us = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %blend.i.i826839.ph.us, <8 x float> %mul_mul____z_re_8512_load87___z_im_8513_load88.us, <8 x float> %floatmask.i716.us) #1\n",
      "  %add_x_load90___new_re_8515_load.us = fadd <8 x float> %add_x0_load_mul_i_load_to_float_dx_load_broadcast.us, %blend.i.i.us\n",
      "  %blend.i.i823.us = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %blend.i.i823828.ph.us, <8 x float> %add_x_load90___new_re_8515_load.us, <8 x float> %floatmask.i716.us) #1\n",
      "  %add_y_load92___new_im_8516_load.us = fadd <8 x float> %add_y0_load_broadcast_mul_j_load51_to_float_dy_load_broadcast.us, %blend.i.i826.us\n",
      "  %blend.i.i820.us = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %blend.i.i820830.ph.us, <8 x float> %add_y_load92___new_im_8516_load.us, <8 x float> %floatmask.i716.us) #1\n",
      "  %add___i_8514_load94_.us = add <8 x i64> %final.i817832.ph.us, <i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1>\n",
      "  %old01.i803.us = shufflevector <8 x i64> %final.i817832.ph.us, <8 x i64> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>\n",
      "  %old01f.i804.us = bitcast <4 x i64> %old01.i803.us to <8 x float>\n",
      "  %new01.i805.us = shufflevector <8 x i64> %add___i_8514_load94_.us, <8 x i64> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>\n",
      "  %new01f.i806.us = bitcast <4 x i64> %new01.i805.us to <8 x float>\n",
      "  %mask01.i807.us = shufflevector <8 x float> %floatmask.i716.us, <8 x float> undef, <8 x i32> <i32 0, i32 0, i32 1, i32 1, i32 2, i32 2, i32 3, i32 3>\n",
      "  %result01f.i808.us = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %old01f.i804.us, <8 x float> %new01f.i806.us, <8 x float> %mask01.i807.us) #1\n",
      "  %result01.i809.us = bitcast <8 x float> %result01f.i808.us to <4 x i64>\n",
      "  %old23.i810.us = shufflevector <8 x i64> %final.i817832.ph.us, <8 x i64> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>\n",
      "  %old23f.i811.us = bitcast <4 x i64> %old23.i810.us to <8 x float>\n",
      "  %new23.i812.us = shufflevector <8 x i64> %add___i_8514_load94_.us, <8 x i64> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>\n",
      "  %new23f.i813.us = bitcast <4 x i64> %new23.i812.us to <8 x float>\n",
      "  %mask23.i814.us = shufflevector <8 x float> %floatmask.i716.us, <8 x float> undef, <8 x i32> <i32 4, i32 4, i32 5, i32 5, i32 6, i32 6, i32 7, i32 7>\n",
      "  %result23f.i815.us = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %old23f.i811.us, <8 x float> %new23f.i813.us, <8 x float> %mask23.i814.us) #1\n",
      "  %result23.i816.us = bitcast <8 x float> %result23f.i815.us to <4 x i64>\n",
      "  %final.i817.us = shufflevector <4 x i64> %result01.i809.us, <4 x i64> %result23.i816.us, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>\n",
      "  br label %if_done.us\n",
      "\n",
      "if_done.us:                                       ; preds = %safe_if_run_false.us, %safe_if_after_true.us\n",
      "  %blend.i.i826840.us = phi <8 x float> [ %blend.i.i826839.ph.us, %safe_if_after_true.us ], [ %blend.i.i826.us, %safe_if_run_false.us ]\n",
      "  %blend.i.i836.us = phi <8 x float> [ %blend.i.i835.ph.us, %safe_if_after_true.us ], [ %blend.i.i.us, %safe_if_run_false.us ]\n",
      "  %final.i817831.us = phi <8 x i64> [ %final.i817832.ph.us, %safe_if_after_true.us ], [ %final.i817.us, %safe_if_run_false.us ]\n",
      "  %blend.i.i820829.us = phi <8 x float> [ %blend.i.i820830.ph.us, %safe_if_after_true.us ], [ %blend.i.i820.us, %safe_if_run_false.us ]\n",
      "  %blend.i.i823827.us = phi <8 x float> [ %blend.i.i823828.ph.us, %safe_if_after_true.us ], [ %blend.i.i823.us, %safe_if_run_false.us ]\n",
      "  %\"!(break|continue)_lanes.us\" = xor <8 x i32> %break_lanes_memory58.1.us, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>\n",
      "  %new_mask102.us = and <8 x i32> %\"oldMask&test60.us\", %\"!(break|continue)_lanes.us\"\n",
      "  br label %for_test52.outer.us\n",
      "\n",
      "for_exit55.us:                                    ; preds = %for_test52.us\n",
      "  %_gensym5_load_to_float.us = sitofp <8 x i64> %final.i817832.ph.us to <8 x float>\n",
      "  %smear_counter49_cast.elt0.us = zext i32 %counter.1891.us to i64\n",
      "  %add_mul_output__len__1_load_sub_i_load115__broadcast_smear_counter49_cast.elt0.us = add i64 %smear_counter49_cast.elt0.us, %mul_output__len__1_load_sub_i_load115_.us\n",
      "  %add_mul_output__len__1_load_sub_i_load115__broadcast_smear_counter49_cast_cast.elt0.us = trunc i64 %add_mul_output__len__1_load_sub_i_load115__broadcast_smear_counter49_cast.elt0.us to i32\n",
      "  %shl_add_mul_output__len__1_load_sub_i_load115__broadcast_smear_counter49_cast_cast_.elt0.us = shl i32 %add_mul_output__len__1_load_sub_i_load115__broadcast_smear_counter49_cast_cast.elt0.us, 2\n",
      "  %\"varying+const_offsets.elt0.us\" = add i32 %shl_add_mul_output__len__1_load_sub_i_load115__broadcast_smear_counter49_cast_cast_.elt0.us, -4\n",
      "  %1 = sext i32 %\"varying+const_offsets.elt0.us\" to i64\n",
      "  %ptr.us = getelementptr i8* %output_load_ptr2int_2void, i64 %1, !filename !2, !first_line !3, !first_column !4, !last_line !3, !last_column !5\n",
      "  %ptrcast.us = bitcast i8* %ptr.us to <8 x float>*\n",
      "  store <8 x float> %_gensym5_load_to_float.us, <8 x float>* %ptrcast.us, align 4, !filename !2, !first_line !3, !first_column !4, !last_line !3, !last_column !5\n",
      "  %new_counter.us = add i32 %counter.1891.us, 8\n",
      "  %before_aligned_end44.us = icmp slt i32 %new_counter.us, %aligned_end\n",
      "  br i1 %before_aligned_end44.us, label %foreach_full_body.us, label %partial_inner_all_outer.us\n",
      "\n",
      "for_test52.outer.us:                              ; preds = %if_done.us, %foreach_full_body.us\n",
      "  %blend.i.i826839.ph.us = phi <8 x float> [ %blend.i.i826840.us, %if_done.us ], [ %blend.i.i826838889.us, %foreach_full_body.us ]\n",
      "  %blend.i.i835.ph.us = phi <8 x float> [ %blend.i.i836.us, %if_done.us ], [ %blend.i.i834890.us, %foreach_full_body.us ]\n",
      "  %final.i817832.ph.us = phi <8 x i64> [ %final.i817831.us, %if_done.us ], [ zeroinitializer, %foreach_full_body.us ]\n",
      "  %blend.i.i820830.ph.us = phi <8 x float> [ %blend.i.i820829.us, %if_done.us ], [ %add_y0_load_broadcast_mul_j_load51_to_float_dy_load_broadcast.us, %foreach_full_body.us ]\n",
      "  %blend.i.i823828.ph.us = phi <8 x float> [ %blend.i.i823827.us, %if_done.us ], [ %add_x0_load_mul_i_load_to_float_dx_load_broadcast.us, %foreach_full_body.us ]\n",
      "  %internal_mask_memory.2.ph.us = phi <8 x i32> [ %new_mask102.us, %if_done.us ], [ <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>, %foreach_full_body.us ]\n",
      "  %less___i_8514_load_max_iters_load_broadcast.us = icmp slt <8 x i64> %final.i817832.ph.us, %max_iters_load_broadcast\n",
      "  %mul___z_re_8512_load___z_re_8512_load67.us = fmul <8 x float> %blend.i.i823828.ph.us, %blend.i.i823828.ph.us\n",
      "  %mul___z_im_8513_load___z_im_8513_load68.us = fmul <8 x float> %blend.i.i820830.ph.us, %blend.i.i820830.ph.us\n",
      "  %add_mul___z_re_8512_load___z_re_8512_load67_mul___z_im_8513_load___z_im_8513_load68.us = fadd <8 x float> %mul___z_im_8513_load___z_im_8513_load68.us, %mul___z_re_8512_load___z_re_8512_load67.us\n",
      "  %less__add_mul___z_re_8512_load___z_re_8512_load67_mul___z_im_8513_load___z_im_8513_load68.us = fcmp ugt <8 x float> %add_mul___z_re_8512_load___z_re_8512_load67_mul___z_im_8513_load___z_im_8513_load68.us, <float 4.000000e+00, float 4.000000e+00, float 4.000000e+00, float 4.000000e+00, float 4.000000e+00, float 4.000000e+00, float 4.000000e+00, float 4.000000e+00>\n",
      "  br label %for_test52.us\n",
      "\n",
      "foreach_full_body.lr.ph.us:                       ; preds = %for_test.us\n",
      "  %add__s40_load30_.us = add i64 %_s40.0.us, 1\n",
      "  %i_load_to_float.us = sitofp i64 %_s40.0.us to float\n",
      "  %mul_i_load_to_float_dx_load.us = fmul float %i_load_to_float.us, %dx\n",
      "  %add_x0_load_mul_i_load_to_float_dx_load.us = fadd float %mul_i_load_to_float_dx_load.us, %x0\n",
      "  %add_x0_load_mul_i_load_to_float_dx_load_broadcast_init.us = insertelement <8 x float> undef, float %add_x0_load_mul_i_load_to_float_dx_load.us, i32 0\n",
      "  %add_x0_load_mul_i_load_to_float_dx_load_broadcast.us = shufflevector <8 x float> %add_x0_load_mul_i_load_to_float_dx_load_broadcast_init.us, <8 x float> undef, <8 x i32> zeroinitializer\n",
      "  %sub_i_load115_.us = add i64 %_s40.0.us, -1\n",
      "  %mul_output__len__1_load_sub_i_load115_.us = mul i64 %sub_i_load115_.us, %output__len__1\n",
      "  br label %foreach_full_body.us\n",
      "\n",
      "for_test:                                         ; preds = %partial_inner_all_outer, %for_test.outer\n",
      "  %_s40.0 = phi i64 [ %add__s40_load30_, %partial_inner_all_outer ], [ %_s40.0.ph, %for_test.outer ]\n",
      "  %internal_mask_memory.0 = phi <8 x i32> [ %\"oldMask&test\", %partial_inner_all_outer ], [ %internal_mask_memory.0.ph, %for_test.outer ]\n",
      "  %equal__s40_load_add__gensym318_stop_ = icmp eq i64 %_s40.0, %add__gensym318_stop_\n",
      "  %equal__s40_load_add__gensym318_stop_to_i_bool = sext i1 %equal__s40_load_add__gensym318_stop_ to i32\n",
      "  %equal__s40_load_add__gensym318_stop_to_i_bool_broadcast_init = insertelement <8 x i32> undef, i32 %equal__s40_load_add__gensym318_stop_to_i_bool, i32 0\n",
      "  %equal__s40_load_add__gensym318_stop_to_i_bool_broadcast = shufflevector <8 x i32> %equal__s40_load_add__gensym318_stop_to_i_bool_broadcast_init, <8 x i32> undef, <8 x i32> zeroinitializer\n",
      "  %val_load_logicalnot.i728 = xor <8 x i32> %equal__s40_load_add__gensym318_stop_to_i_bool_broadcast, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>\n",
      "  %\"oldMask&test\" = and <8 x i32> %internal_mask_memory.0, %val_load_logicalnot.i728\n",
      "  %floatmask.i725 = bitcast <8 x i32> %\"oldMask&test\" to <8 x float>\n",
      "  %v.i726 = tail call i32 @llvm.x86.avx.movmsk.ps.256(<8 x float> %floatmask.i725) #0\n",
      "  %cmp.i727 = icmp eq i32 %v.i726, 0\n",
      "  br i1 %cmp.i727, label %for_exit, label %partial_inner_all_outer\n",
      "\n",
      "for_exit:                                         ; preds = %for_test288, %for_test, %for_test.us\n",
      "  ret void\n",
      "\n",
      "partial_inner_all_outer:                          ; preds = %for_test\n",
      "  %add__s40_load30_ = add i64 %_s40.0, 1\n",
      "  %before_full_end = icmp sgt i32 %add_height_load__to_int32, 1\n",
      "  br i1 %before_full_end, label %partial_inner_only, label %for_test\n",
      "\n",
      "partial_inner_only:                               ; preds = %partial_inner_all_outer, %partial_inner_all_outer.us\n",
      "  %add__s40_load30_.lcssa = phi i64 [ %add__s40_load30_.us, %partial_inner_all_outer.us ], [ %add__s40_load30_, %partial_inner_all_outer ]\n",
      "  %\"oldMask&test.lcssa882\" = phi <8 x i32> [ %\"oldMask&test.us\", %partial_inner_all_outer.us ], [ %\"oldMask&test\", %partial_inner_all_outer ]\n",
      "  %_s40.0.lcssa881 = phi i64 [ %_s40.0.us, %partial_inner_all_outer.us ], [ %_s40.0, %partial_inner_all_outer ]\n",
      "  %counter.1.lcssa.lcssa = phi i32 [ %new_counter.us, %partial_inner_all_outer.us ], [ 1, %partial_inner_all_outer ]\n",
      "  %blend.i.i834.lcssa.lcssa = phi <8 x float> [ %blend.i.i835.ph.us, %partial_inner_all_outer.us ], [ %blend.i.i833.ph, %partial_inner_all_outer ]\n",
      "  %blend.i.i826838.lcssa.lcssa = phi <8 x float> [ %blend.i.i826839.ph.us, %partial_inner_all_outer.us ], [ %blend.i.i826837.ph, %partial_inner_all_outer ]\n",
      "  %smear_counter_init128 = insertelement <8 x i32> undef, i32 %counter.1.lcssa.lcssa, i32 0\n",
      "  %smear_counter129 = shufflevector <8 x i32> %smear_counter_init128, <8 x i32> undef, <8 x i32> zeroinitializer\n",
      "  %iter_val130 = add <8 x i32> %smear_counter129, <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>\n",
      "  %smear_end_init131 = insertelement <8 x i32> undef, i32 %add_height_load__to_int32, i32 0\n",
      "  %smear_end132 = shufflevector <8 x i32> %smear_end_init131, <8 x i32> undef, <8 x i32> zeroinitializer\n",
      "  %cmp133 = icmp slt <8 x i32> %iter_val130, %smear_end132\n",
      "  %cmp133_to_boolvec = sext <8 x i1> %cmp133 to <8 x i32>\n",
      "  %i_load140_to_float = sitofp i64 %_s40.0.lcssa881 to float\n",
      "  %mul_i_load140_to_float_dx_load141 = fmul float %i_load140_to_float, %dx\n",
      "  %add_x0_load139_mul_i_load140_to_float_dx_load141 = fadd float %mul_i_load140_to_float_dx_load141, %x0\n",
      "  %add_x0_load139_mul_i_load140_to_float_dx_load141_broadcast_init = insertelement <8 x float> undef, float %add_x0_load139_mul_i_load140_to_float_dx_load141, i32 0\n",
      "  %add_x0_load139_mul_i_load140_to_float_dx_load141_broadcast = shufflevector <8 x float> %add_x0_load139_mul_i_load140_to_float_dx_load141_broadcast_init, <8 x float> undef, <8 x i32> zeroinitializer\n",
      "  %j_load144_to_float = sitofp <8 x i32> %iter_val130 to <8 x float>\n",
      "  %mul_j_load144_to_float_dy_load145_broadcast = fmul <8 x float> %dy_load_broadcast, %j_load144_to_float\n",
      "  %add_y0_load143_broadcast_mul_j_load144_to_float_dy_load145_broadcast = fadd <8 x float> %y0_load_broadcast, %mul_j_load144_to_float_dy_load145_broadcast\n",
      "  br label %for_test153.outer\n",
      "\n",
      "for_test153.outer:                                ; preds = %if_done175, %partial_inner_only\n",
      "  %blend.i.i795851.ph = phi <8 x float> [ %blend.i.i795852, %if_done175 ], [ %blend.i.i795850.ph, %partial_inner_only ]\n",
      "  %blend.i.i798848.ph = phi <8 x float> [ %blend.i.i798849, %if_done175 ], [ %blend.i.i798847.ph, %partial_inner_only ]\n",
      "  %final.i786846.ph = phi <8 x i64> [ %final.i786845, %if_done175 ], [ zeroinitializer, %partial_inner_only ]\n",
      "  %blend.i.i789844.ph = phi <8 x float> [ %blend.i.i789843, %if_done175 ], [ %add_y0_load143_broadcast_mul_j_load144_to_float_dy_load145_broadcast, %partial_inner_only ]\n",
      "  %blend.i.i792842.ph = phi <8 x float> [ %blend.i.i792841, %if_done175 ], [ %add_x0_load139_mul_i_load140_to_float_dx_load141_broadcast, %partial_inner_only ]\n",
      "  %internal_mask_memory.4.ph = phi <8 x i32> [ %new_mask229, %if_done175 ], [ %cmp133_to_boolvec, %partial_inner_only ]\n",
      "  %less___i_8514_load160_max_iters_load161_broadcast = icmp slt <8 x i64> %final.i786846.ph, %max_iters_load_broadcast\n",
      "  %mul___z_re_8512_load170___z_re_8512_load171 = fmul <8 x float> %blend.i.i792842.ph, %blend.i.i792842.ph\n",
      "  %mul___z_im_8513_load172___z_im_8513_load173 = fmul <8 x float> %blend.i.i789844.ph, %blend.i.i789844.ph\n",
      "  %add_mul___z_re_8512_load170___z_re_8512_load171_mul___z_im_8513_load172___z_im_8513_load173 = fadd <8 x float> %mul___z_im_8513_load172___z_im_8513_load173, %mul___z_re_8512_load170___z_re_8512_load171\n",
      "  %less__add_mul___z_re_8512_load170___z_re_8512_load171_mul___z_im_8513_load172___z_im_8513_load173 = fcmp ugt <8 x float> %add_mul___z_re_8512_load170___z_re_8512_load171_mul___z_im_8513_load172___z_im_8513_load173, <float 4.000000e+00, float 4.000000e+00, float 4.000000e+00, float 4.000000e+00, float 4.000000e+00, float 4.000000e+00, float 4.000000e+00, float 4.000000e+00>\n",
      "  br label %for_test153\n",
      "\n",
      "for_test153:                                      ; preds = %safe_if_run_true177, %for_test153.outer\n",
      "  %internal_mask_memory.4 = phi <8 x i32> [ zeroinitializer, %safe_if_run_true177 ], [ %internal_mask_memory.4.ph, %for_test153.outer ]\n",
      "  %\"oldMask&test163\" = select <8 x i1> %less___i_8514_load160_max_iters_load161_broadcast, <8 x i32> %internal_mask_memory.4, <8 x i32> zeroinitializer\n",
      "  %floatmask.i707 = bitcast <8 x i32> %\"oldMask&test163\" to <8 x float>\n",
      "  %v.i708 = tail call i32 @llvm.x86.avx.movmsk.ps.256(<8 x float> %floatmask.i707) #0\n",
      "  %cmp.i709 = icmp eq i32 %v.i708, 0\n",
      "  br i1 %cmp.i709, label %for_exit156, label %for_loop155\n",
      "\n",
      "for_loop155:                                      ; preds = %for_test153\n",
      "  %\"oldMask&test178\" = select <8 x i1> %less__add_mul___z_re_8512_load170___z_re_8512_load171_mul___z_im_8513_load172___z_im_8513_load173, <8 x i32> %\"oldMask&test163\", <8 x i32> zeroinitializer\n",
      "  %floatmask.i704 = bitcast <8 x i32> %\"oldMask&test178\" to <8 x float>\n",
      "  %v.i705 = tail call i32 @llvm.x86.avx.movmsk.ps.256(<8 x float> %floatmask.i704) #0\n",
      "  %cmp.i706 = icmp eq i32 %v.i705, 0\n",
      "  br i1 %cmp.i706, label %safe_if_after_true176, label %safe_if_run_true177\n",
      "\n",
      "for_exit156:                                      ; preds = %for_test153\n",
      "  %sub_i_load246_ = add i64 %_s40.0.lcssa881, -1\n",
      "  %mul_output__len__1_load245_sub_i_load246_ = mul i64 %sub_i_load246_, %output__len__1\n",
      "  %_gensym5_load248_to_float = sitofp <8 x i64> %final.i786846.ph to <8 x float>\n",
      "  %j.0_cast.elt0 = zext i32 %counter.1.lcssa.lcssa to i64\n",
      "  %add_mul_output__len__1_load245_sub_i_load246__broadcast_j.0_cast.elt0 = add i64 %j.0_cast.elt0, %mul_output__len__1_load245_sub_i_load246_\n",
      "  %add_mul_output__len__1_load245_sub_i_load246__broadcast_j.0_cast_cast.elt0 = trunc i64 %add_mul_output__len__1_load245_sub_i_load246__broadcast_j.0_cast.elt0 to i32\n",
      "  %shl_add_mul_output__len__1_load245_sub_i_load246__broadcast_j.0_cast_cast_.elt0 = shl i32 %add_mul_output__len__1_load245_sub_i_load246__broadcast_j.0_cast_cast.elt0, 2\n",
      "  %\"varying+const_offsets.elt0646\" = add i32 %shl_add_mul_output__len__1_load245_sub_i_load246__broadcast_j.0_cast_cast_.elt0, -4\n",
      "  %2 = sext i32 %\"varying+const_offsets.elt0646\" to i64\n",
      "  %ptr647 = getelementptr i8* %output_load_ptr2int_2void, i64 %2\n",
      "  %mask.i.i800 = bitcast <8 x i32> %cmp133_to_boolvec to <8 x float>\n",
      "  call void @llvm.x86.avx.maskstore.ps.256(i8* %ptr647, <8 x float> %mask.i.i800, <8 x float> %_gensym5_load248_to_float) #1\n",
      "  br label %for_test.outer\n",
      "\n",
      "if_done175:                                       ; preds = %safe_if_run_false196, %safe_if_after_true176\n",
      "  %blend.i.i795852 = phi <8 x float> [ %blend.i.i795851.ph, %safe_if_after_true176 ], [ %blend.i.i795, %safe_if_run_false196 ]\n",
      "  %blend.i.i798849 = phi <8 x float> [ %blend.i.i798848.ph, %safe_if_after_true176 ], [ %blend.i.i798, %safe_if_run_false196 ]\n",
      "  %final.i786845 = phi <8 x i64> [ %final.i786846.ph, %safe_if_after_true176 ], [ %final.i786, %safe_if_run_false196 ]\n",
      "  %blend.i.i789843 = phi <8 x float> [ %blend.i.i789844.ph, %safe_if_after_true176 ], [ %blend.i.i789, %safe_if_run_false196 ]\n",
      "  %blend.i.i792841 = phi <8 x float> [ %blend.i.i792842.ph, %safe_if_after_true176 ], [ %blend.i.i792, %safe_if_run_false196 ]\n",
      "  %\"!(break|continue)_lanes227\" = xor <8 x i32> %break_lanes_memory159.1, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>\n",
      "  %new_mask229 = and <8 x i32> %\"oldMask&test163\", %\"!(break|continue)_lanes227\"\n",
      "  br label %for_test153.outer\n",
      "\n",
      "safe_if_after_true176:                            ; preds = %safe_if_run_true177, %for_loop155\n",
      "  %break_lanes_memory159.1 = phi <8 x i32> [ %\"oldMask&test178\", %safe_if_run_true177 ], [ zeroinitializer, %for_loop155 ]\n",
      "  %3 = bitcast <8 x i32> %\"oldMask&test163\" to <8 x float>\n",
      "  %floatmask.i701 = select <8 x i1> %less__add_mul___z_re_8512_load170___z_re_8512_load171_mul___z_im_8513_load172___z_im_8513_load173, <8 x float> zeroinitializer, <8 x float> %3\n",
      "  %v.i702 = tail call i32 @llvm.x86.avx.movmsk.ps.256(<8 x float> %floatmask.i701) #0\n",
      "  %cmp.i703 = icmp eq i32 %v.i702, 0\n",
      "  br i1 %cmp.i703, label %if_done175, label %safe_if_run_false196\n",
      "\n",
      "safe_if_run_true177:                              ; preds = %for_loop155\n",
      "  %\"equal_finished&func193_internal_mask&function_mask169\" = icmp eq i32 %v.i705, %v.i708\n",
      "  br i1 %\"equal_finished&func193_internal_mask&function_mask169\", label %for_test153, label %safe_if_after_true176\n",
      "\n",
      "safe_if_run_false196:                             ; preds = %safe_if_after_true176\n",
      "  %sub_mul___z_re_8512_load203___z_re_8512_load204_mul___z_im_8513_load205___z_im_8513_load206 = fsub <8 x float> %mul___z_re_8512_load170___z_re_8512_load171, %mul___z_im_8513_load172___z_im_8513_load173\n",
      "  %blend.i.i798 = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %blend.i.i798848.ph, <8 x float> %sub_mul___z_re_8512_load203___z_re_8512_load204_mul___z_im_8513_load205___z_im_8513_load206, <8 x float> %floatmask.i701) #1\n",
      "  %mul____z_re_8512_load208 = fmul <8 x float> %blend.i.i792842.ph, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>\n",
      "  %mul_mul____z_re_8512_load208___z_im_8513_load209 = fmul <8 x float> %blend.i.i789844.ph, %mul____z_re_8512_load208\n",
      "  %blend.i.i795 = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %blend.i.i795851.ph, <8 x float> %mul_mul____z_re_8512_load208___z_im_8513_load209, <8 x float> %floatmask.i701) #1\n",
      "  %add_x_load211___new_re_8515_load212 = fadd <8 x float> %add_x0_load139_mul_i_load140_to_float_dx_load141_broadcast, %blend.i.i798\n",
      "  %blend.i.i792 = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %blend.i.i792842.ph, <8 x float> %add_x_load211___new_re_8515_load212, <8 x float> %floatmask.i701) #1\n",
      "  %add_y_load214___new_im_8516_load215 = fadd <8 x float> %add_y0_load143_broadcast_mul_j_load144_to_float_dy_load145_broadcast, %blend.i.i795\n",
      "  %blend.i.i789 = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %blend.i.i789844.ph, <8 x float> %add_y_load214___new_im_8516_load215, <8 x float> %floatmask.i701) #1\n",
      "  %add___i_8514_load217_ = add <8 x i64> %final.i786846.ph, <i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1>\n",
      "  %old01.i772 = shufflevector <8 x i64> %final.i786846.ph, <8 x i64> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>\n",
      "  %old01f.i773 = bitcast <4 x i64> %old01.i772 to <8 x float>\n",
      "  %new01.i774 = shufflevector <8 x i64> %add___i_8514_load217_, <8 x i64> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>\n",
      "  %new01f.i775 = bitcast <4 x i64> %new01.i774 to <8 x float>\n",
      "  %mask01.i776 = shufflevector <8 x float> %floatmask.i701, <8 x float> undef, <8 x i32> <i32 0, i32 0, i32 1, i32 1, i32 2, i32 2, i32 3, i32 3>\n",
      "  %result01f.i777 = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %old01f.i773, <8 x float> %new01f.i775, <8 x float> %mask01.i776) #1\n",
      "  %result01.i778 = bitcast <8 x float> %result01f.i777 to <4 x i64>\n",
      "  %old23.i779 = shufflevector <8 x i64> %final.i786846.ph, <8 x i64> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>\n",
      "  %old23f.i780 = bitcast <4 x i64> %old23.i779 to <8 x float>\n",
      "  %new23.i781 = shufflevector <8 x i64> %add___i_8514_load217_, <8 x i64> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>\n",
      "  %new23f.i782 = bitcast <4 x i64> %new23.i781 to <8 x float>\n",
      "  %mask23.i783 = shufflevector <8 x float> %floatmask.i701, <8 x float> undef, <8 x i32> <i32 4, i32 4, i32 5, i32 5, i32 6, i32 6, i32 7, i32 7>\n",
      "  %result23f.i784 = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %old23f.i780, <8 x float> %new23f.i782, <8 x float> %mask23.i783) #1\n",
      "  %result23.i785 = bitcast <8 x float> %result23f.i784 to <4 x i64>\n",
      "  %final.i786 = shufflevector <4 x i64> %result01.i778, <4 x i64> %result23.i785, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>\n",
      "  br label %if_done175\n",
      "\n",
      "for_test288:                                      ; preds = %for_test288.outer, %partial_inner_all_outer353\n",
      "  %blend.i.i766863 = phi <8 x float> [ %blend.i.i766864.lcssa, %partial_inner_all_outer353 ], [ %blend.i.i766863.ph, %for_test288.outer ]\n",
      "  %blend.i.i769859 = phi <8 x float> [ %blend.i.i769860.lcssa, %partial_inner_all_outer353 ], [ %blend.i.i769859.ph, %for_test288.outer ]\n",
      "  %_s40285.0 = phi i64 [ %add__s40_load312_, %partial_inner_all_outer353 ], [ %_s40285.0.ph, %for_test288.outer ]\n",
      "  %internal_mask_memory.6 = phi <8 x i32> [ %\"oldMask&test302\", %partial_inner_all_outer353 ], [ %internal_mask_memory.6.ph, %for_test288.outer ]\n",
      "  %equal__s40_load295_add__gensym3276296_stop_ = icmp eq i64 %_s40285.0, %add__gensym318_stop_\n",
      "  %equal__s40_load295_add__gensym3276296_stop_to_i_bool = sext i1 %equal__s40_load295_add__gensym3276296_stop_ to i32\n",
      "  %equal__s40_load295_add__gensym3276296_stop_to_i_bool_broadcast_init = insertelement <8 x i32> undef, i32 %equal__s40_load295_add__gensym3276296_stop_to_i_bool, i32 0\n",
      "  %equal__s40_load295_add__gensym3276296_stop_to_i_bool_broadcast = shufflevector <8 x i32> %equal__s40_load295_add__gensym3276296_stop_to_i_bool_broadcast_init, <8 x i32> undef, <8 x i32> zeroinitializer\n",
      "  %val_load_logicalnot.i = xor <8 x i32> %equal__s40_load295_add__gensym3276296_stop_to_i_bool_broadcast, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>\n",
      "  %\"oldMask&test302\" = and <8 x i32> %internal_mask_memory.6, %val_load_logicalnot.i\n",
      "  %\"internal_mask&function_mask306\" = and <8 x i32> %\"oldMask&test302\", %__mask\n",
      "  %floatmask.i692 = bitcast <8 x i32> %\"internal_mask&function_mask306\" to <8 x float>\n",
      "  %v.i693 = tail call i32 @llvm.x86.avx.movmsk.ps.256(<8 x float> %floatmask.i692) #0\n",
      "  %cmp.i694 = icmp eq i32 %v.i693, 0\n",
      "  br i1 %cmp.i694, label %for_exit, label %for_loop290\n",
      "\n",
      "for_loop290:                                      ; preds = %for_test288\n",
      "  %add__s40_load312_ = add i64 %_s40285.0, 1\n",
      "  br i1 %before_aligned_end44888, label %foreach_full_body317.lr.ph, label %partial_inner_all_outer353\n",
      "\n",
      "foreach_full_body317.lr.ph:                       ; preds = %for_loop290\n",
      "  %i_load365_to_float = sitofp i64 %_s40285.0 to float\n",
      "  %mul_i_load365_to_float_dx_load366 = fmul float %i_load365_to_float, %dx\n",
      "  %add_x0_load364_mul_i_load365_to_float_dx_load366 = fadd float %mul_i_load365_to_float_dx_load366, %x0\n",
      "  %add_x0_load364_mul_i_load365_to_float_dx_load366_broadcast_init = insertelement <8 x float> undef, float %add_x0_load364_mul_i_load365_to_float_dx_load366, i32 0\n",
      "  %add_x0_load364_mul_i_load365_to_float_dx_load366_broadcast = shufflevector <8 x float> %add_x0_load364_mul_i_load365_to_float_dx_load366_broadcast_init, <8 x float> undef, <8 x i32> zeroinitializer\n",
      "  %sub_i_load471_ = add i64 %_s40285.0, -1\n",
      "  %mul_output__len__1_load470_sub_i_load471_ = mul i64 %sub_i_load471_, %output__len__1\n",
      "  br label %foreach_full_body317\n",
      "\n",
      "foreach_full_body317:                             ; preds = %for_exit381, %foreach_full_body317.lr.ph\n",
      "  %counter331.1897 = phi i32 [ 1, %foreach_full_body317.lr.ph ], [ %new_counter484, %for_exit381 ]\n",
      "  %blend.i.i769860896 = phi <8 x float> [ %blend.i.i769859, %foreach_full_body317.lr.ph ], [ %blend.i.i769861.ph, %for_exit381 ]\n",
      "  %blend.i.i766864895 = phi <8 x float> [ %blend.i.i766863, %foreach_full_body317.lr.ph ], [ %blend.i.i766865.ph, %for_exit381 ]\n",
      "  %smear_counter_init360 = insertelement <8 x i32> undef, i32 %counter331.1897, i32 0\n",
      "  %smear_counter361 = shufflevector <8 x i32> %smear_counter_init360, <8 x i32> undef, <8 x i32> zeroinitializer\n",
      "  %iter_val362 = add <8 x i32> %smear_counter361, <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>\n",
      "  %j_load369_to_float = sitofp <8 x i32> %iter_val362 to <8 x float>\n",
      "  %mul_j_load369_to_float_dy_load370_broadcast = fmul <8 x float> %dy_load_broadcast, %j_load369_to_float\n",
      "  %add_y0_load368_broadcast_mul_j_load369_to_float_dy_load370_broadcast = fadd <8 x float> %y0_load_broadcast, %mul_j_load369_to_float_dy_load370_broadcast\n",
      "  br label %for_test378.outer\n",
      "\n",
      "partial_inner_all_outer353:                       ; preds = %for_exit381, %for_loop290\n",
      "  %counter331.1.lcssa = phi i32 [ 1, %for_loop290 ], [ %new_counter484, %for_exit381 ]\n",
      "  %blend.i.i769860.lcssa = phi <8 x float> [ %blend.i.i769859, %for_loop290 ], [ %blend.i.i769861.ph, %for_exit381 ]\n",
      "  %blend.i.i766864.lcssa = phi <8 x float> [ %blend.i.i766863, %for_loop290 ], [ %blend.i.i766865.ph, %for_exit381 ]\n",
      "  %before_full_end487 = icmp slt i32 %counter331.1.lcssa, %add_height_load__to_int32\n",
      "  br i1 %before_full_end487, label %partial_inner_only485, label %for_test288\n",
      "\n",
      "for_test378:                                      ; preds = %safe_if_run_true402, %for_test378.outer\n",
      "  %internal_mask_memory.8 = phi <8 x i32> [ zeroinitializer, %safe_if_run_true402 ], [ %internal_mask_memory.8.ph, %for_test378.outer ]\n",
      "  %\"oldMask&test388\" = select <8 x i1> %less___i_8514_load385_max_iters_load386_broadcast, <8 x i32> %internal_mask_memory.8, <8 x i32> zeroinitializer\n",
      "  %floatmask.i689 = bitcast <8 x i32> %\"oldMask&test388\" to <8 x float>\n",
      "  %v.i690 = tail call i32 @llvm.x86.avx.movmsk.ps.256(<8 x float> %floatmask.i689) #0\n",
      "  %cmp.i691 = icmp eq i32 %v.i690, 0\n",
      "  br i1 %cmp.i691, label %for_exit381, label %for_loop380\n",
      "\n",
      "for_loop380:                                      ; preds = %for_test378\n",
      "  %\"oldMask&test403\" = select <8 x i1> %less__add_mul___z_re_8512_load395___z_re_8512_load396_mul___z_im_8513_load397___z_im_8513_load398, <8 x i32> %\"oldMask&test388\", <8 x i32> zeroinitializer\n",
      "  %floatmask.i686 = bitcast <8 x i32> %\"oldMask&test403\" to <8 x float>\n",
      "  %v.i687 = tail call i32 @llvm.x86.avx.movmsk.ps.256(<8 x float> %floatmask.i686) #0\n",
      "  %cmp.i688 = icmp eq i32 %v.i687, 0\n",
      "  br i1 %cmp.i688, label %safe_if_after_true401, label %safe_if_run_true402\n",
      "\n",
      "for_exit381:                                      ; preds = %for_test378\n",
      "  %_gensym5_load473_to_float = sitofp <8 x i64> %final.i757858.ph to <8 x float>\n",
      "  %smear_counter361_cast.elt0 = zext i32 %counter331.1897 to i64\n",
      "  %add_mul_output__len__1_load470_sub_i_load471__broadcast_smear_counter361_cast.elt0 = add i64 %smear_counter361_cast.elt0, %mul_output__len__1_load470_sub_i_load471_\n",
      "  %add_mul_output__len__1_load470_sub_i_load471__broadcast_smear_counter361_cast_cast.elt0 = trunc i64 %add_mul_output__len__1_load470_sub_i_load471__broadcast_smear_counter361_cast.elt0 to i32\n",
      "  %shl_add_mul_output__len__1_load470_sub_i_load471__broadcast_smear_counter361_cast_cast_.elt0 = shl i32 %add_mul_output__len__1_load470_sub_i_load471__broadcast_smear_counter361_cast_cast.elt0, 2\n",
      "  %\"varying+const_offsets.elt0652\" = add i32 %shl_add_mul_output__len__1_load470_sub_i_load471__broadcast_smear_counter361_cast_cast_.elt0, -4\n",
      "  %4 = sext i32 %\"varying+const_offsets.elt0652\" to i64\n",
      "  %ptr653 = getelementptr i8* %output_load_ptr2int_2void, i64 %4, !filename !2, !first_line !3, !first_column !4, !last_line !3, !last_column !5\n",
      "  %ptrcast654 = bitcast i8* %ptr653 to <8 x float>*\n",
      "  store <8 x float> %_gensym5_load473_to_float, <8 x float>* %ptrcast654, align 4, !filename !2, !first_line !3, !first_column !4, !last_line !3, !last_column !5\n",
      "  %new_counter484 = add i32 %counter331.1897, 8\n",
      "  %before_aligned_end355 = icmp slt i32 %new_counter484, %aligned_end\n",
      "  br i1 %before_aligned_end355, label %foreach_full_body317, label %partial_inner_all_outer353\n",
      "\n",
      "if_done400:                                       ; preds = %safe_if_run_false421, %safe_if_after_true401\n",
      "  %blend.i.i766866 = phi <8 x float> [ %blend.i.i766865.ph, %safe_if_after_true401 ], [ %blend.i.i766, %safe_if_run_false421 ]\n",
      "  %blend.i.i769862 = phi <8 x float> [ %blend.i.i769861.ph, %safe_if_after_true401 ], [ %blend.i.i769, %safe_if_run_false421 ]\n",
      "  %final.i757857 = phi <8 x i64> [ %final.i757858.ph, %safe_if_after_true401 ], [ %final.i757, %safe_if_run_false421 ]\n",
      "  %blend.i.i760855 = phi <8 x float> [ %blend.i.i760856.ph, %safe_if_after_true401 ], [ %blend.i.i760, %safe_if_run_false421 ]\n",
      "  %blend.i.i763853 = phi <8 x float> [ %blend.i.i763854.ph, %safe_if_after_true401 ], [ %blend.i.i763, %safe_if_run_false421 ]\n",
      "  %\"!(break|continue)_lanes452\" = xor <8 x i32> %break_lanes_memory384.1, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>\n",
      "  %new_mask454 = and <8 x i32> %\"oldMask&test388\", %\"!(break|continue)_lanes452\"\n",
      "  br label %for_test378.outer\n",
      "\n",
      "for_test378.outer:                                ; preds = %if_done400, %foreach_full_body317\n",
      "  %blend.i.i766865.ph = phi <8 x float> [ %blend.i.i766866, %if_done400 ], [ %blend.i.i766864895, %foreach_full_body317 ]\n",
      "  %blend.i.i769861.ph = phi <8 x float> [ %blend.i.i769862, %if_done400 ], [ %blend.i.i769860896, %foreach_full_body317 ]\n",
      "  %final.i757858.ph = phi <8 x i64> [ %final.i757857, %if_done400 ], [ zeroinitializer, %foreach_full_body317 ]\n",
      "  %blend.i.i760856.ph = phi <8 x float> [ %blend.i.i760855, %if_done400 ], [ %add_y0_load368_broadcast_mul_j_load369_to_float_dy_load370_broadcast, %foreach_full_body317 ]\n",
      "  %blend.i.i763854.ph = phi <8 x float> [ %blend.i.i763853, %if_done400 ], [ %add_x0_load364_mul_i_load365_to_float_dx_load366_broadcast, %foreach_full_body317 ]\n",
      "  %internal_mask_memory.8.ph = phi <8 x i32> [ %new_mask454, %if_done400 ], [ <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>, %foreach_full_body317 ]\n",
      "  %less___i_8514_load385_max_iters_load386_broadcast = icmp slt <8 x i64> %final.i757858.ph, %max_iters_load_broadcast\n",
      "  %mul___z_re_8512_load395___z_re_8512_load396 = fmul <8 x float> %blend.i.i763854.ph, %blend.i.i763854.ph\n",
      "  %mul___z_im_8513_load397___z_im_8513_load398 = fmul <8 x float> %blend.i.i760856.ph, %blend.i.i760856.ph\n",
      "  %add_mul___z_re_8512_load395___z_re_8512_load396_mul___z_im_8513_load397___z_im_8513_load398 = fadd <8 x float> %mul___z_im_8513_load397___z_im_8513_load398, %mul___z_re_8512_load395___z_re_8512_load396\n",
      "  %less__add_mul___z_re_8512_load395___z_re_8512_load396_mul___z_im_8513_load397___z_im_8513_load398 = fcmp ugt <8 x float> %add_mul___z_re_8512_load395___z_re_8512_load396_mul___z_im_8513_load397___z_im_8513_load398, <float 4.000000e+00, float 4.000000e+00, float 4.000000e+00, float 4.000000e+00, float 4.000000e+00, float 4.000000e+00, float 4.000000e+00, float 4.000000e+00>\n",
      "  br label %for_test378\n",
      "\n",
      "safe_if_after_true401:                            ; preds = %safe_if_run_true402, %for_loop380\n",
      "  %break_lanes_memory384.1 = phi <8 x i32> [ %\"oldMask&test403\", %safe_if_run_true402 ], [ zeroinitializer, %for_loop380 ]\n",
      "  %5 = bitcast <8 x i32> %\"oldMask&test388\" to <8 x float>\n",
      "  %floatmask.i683 = select <8 x i1> %less__add_mul___z_re_8512_load395___z_re_8512_load396_mul___z_im_8513_load397___z_im_8513_load398, <8 x float> zeroinitializer, <8 x float> %5\n",
      "  %v.i684 = tail call i32 @llvm.x86.avx.movmsk.ps.256(<8 x float> %floatmask.i683) #0\n",
      "  %cmp.i685 = icmp eq i32 %v.i684, 0\n",
      "  br i1 %cmp.i685, label %if_done400, label %safe_if_run_false421\n",
      "\n",
      "safe_if_run_true402:                              ; preds = %for_loop380\n",
      "  %\"equal_finished&func418_internal_mask&function_mask394\" = icmp eq i32 %v.i687, %v.i690\n",
      "  br i1 %\"equal_finished&func418_internal_mask&function_mask394\", label %for_test378, label %safe_if_after_true401\n",
      "\n",
      "safe_if_run_false421:                             ; preds = %safe_if_after_true401\n",
      "  %sub_mul___z_re_8512_load428___z_re_8512_load429_mul___z_im_8513_load430___z_im_8513_load431 = fsub <8 x float> %mul___z_re_8512_load395___z_re_8512_load396, %mul___z_im_8513_load397___z_im_8513_load398\n",
      "  %blend.i.i769 = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %blend.i.i769861.ph, <8 x float> %sub_mul___z_re_8512_load428___z_re_8512_load429_mul___z_im_8513_load430___z_im_8513_load431, <8 x float> %floatmask.i683) #1\n",
      "  %mul____z_re_8512_load433 = fmul <8 x float> %blend.i.i763854.ph, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>\n",
      "  %mul_mul____z_re_8512_load433___z_im_8513_load434 = fmul <8 x float> %blend.i.i760856.ph, %mul____z_re_8512_load433\n",
      "  %blend.i.i766 = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %blend.i.i766865.ph, <8 x float> %mul_mul____z_re_8512_load433___z_im_8513_load434, <8 x float> %floatmask.i683) #1\n",
      "  %add_x_load436___new_re_8515_load437 = fadd <8 x float> %add_x0_load364_mul_i_load365_to_float_dx_load366_broadcast, %blend.i.i769\n",
      "  %blend.i.i763 = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %blend.i.i763854.ph, <8 x float> %add_x_load436___new_re_8515_load437, <8 x float> %floatmask.i683) #1\n",
      "  %add_y_load439___new_im_8516_load440 = fadd <8 x float> %add_y0_load368_broadcast_mul_j_load369_to_float_dy_load370_broadcast, %blend.i.i766\n",
      "  %blend.i.i760 = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %blend.i.i760856.ph, <8 x float> %add_y_load439___new_im_8516_load440, <8 x float> %floatmask.i683) #1\n",
      "  %add___i_8514_load442_ = add <8 x i64> %final.i757858.ph, <i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1>\n",
      "  %old01.i743 = shufflevector <8 x i64> %final.i757858.ph, <8 x i64> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>\n",
      "  %old01f.i744 = bitcast <4 x i64> %old01.i743 to <8 x float>\n",
      "  %new01.i745 = shufflevector <8 x i64> %add___i_8514_load442_, <8 x i64> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>\n",
      "  %new01f.i746 = bitcast <4 x i64> %new01.i745 to <8 x float>\n",
      "  %mask01.i747 = shufflevector <8 x float> %floatmask.i683, <8 x float> undef, <8 x i32> <i32 0, i32 0, i32 1, i32 1, i32 2, i32 2, i32 3, i32 3>\n",
      "  %result01f.i748 = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %old01f.i744, <8 x float> %new01f.i746, <8 x float> %mask01.i747) #1\n",
      "  %result01.i749 = bitcast <8 x float> %result01f.i748 to <4 x i64>\n",
      "  %old23.i750 = shufflevector <8 x i64> %final.i757858.ph, <8 x i64> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>\n",
      "  %old23f.i751 = bitcast <4 x i64> %old23.i750 to <8 x float>\n",
      "  %new23.i752 = shufflevector <8 x i64> %add___i_8514_load442_, <8 x i64> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>\n",
      "  %new23f.i753 = bitcast <4 x i64> %new23.i752 to <8 x float>\n",
      "  %mask23.i754 = shufflevector <8 x float> %floatmask.i683, <8 x float> undef, <8 x i32> <i32 4, i32 4, i32 5, i32 5, i32 6, i32 6, i32 7, i32 7>\n",
      "  %result23f.i755 = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %old23f.i751, <8 x float> %new23f.i753, <8 x float> %mask23.i754) #1\n",
      "  %result23.i756 = bitcast <8 x float> %result23f.i755 to <4 x i64>\n",
      "  %final.i757 = shufflevector <4 x i64> %result01.i749, <4 x i64> %result23.i756, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>\n",
      "  br label %if_done400\n",
      "\n",
      "partial_inner_only485:                            ; preds = %partial_inner_all_outer353\n",
      "  %smear_counter_init489 = insertelement <8 x i32> undef, i32 %counter331.1.lcssa, i32 0\n",
      "  %smear_counter490 = shufflevector <8 x i32> %smear_counter_init489, <8 x i32> undef, <8 x i32> zeroinitializer\n",
      "  %iter_val491 = add <8 x i32> %smear_counter490, <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>\n",
      "  %smear_end_init492 = insertelement <8 x i32> undef, i32 %add_height_load__to_int32, i32 0\n",
      "  %smear_end493 = shufflevector <8 x i32> %smear_end_init492, <8 x i32> undef, <8 x i32> zeroinitializer\n",
      "  %cmp494 = icmp slt <8 x i32> %iter_val491, %smear_end493\n",
      "  %cmp494_to_boolvec = sext <8 x i1> %cmp494 to <8 x i32>\n",
      "  %i_load503_to_float = sitofp i64 %_s40285.0 to float\n",
      "  %mul_i_load503_to_float_dx_load504 = fmul float %i_load503_to_float, %dx\n",
      "  %add_x0_load502_mul_i_load503_to_float_dx_load504 = fadd float %mul_i_load503_to_float_dx_load504, %x0\n",
      "  %add_x0_load502_mul_i_load503_to_float_dx_load504_broadcast_init = insertelement <8 x float> undef, float %add_x0_load502_mul_i_load503_to_float_dx_load504, i32 0\n",
      "  %add_x0_load502_mul_i_load503_to_float_dx_load504_broadcast = shufflevector <8 x float> %add_x0_load502_mul_i_load503_to_float_dx_load504_broadcast_init, <8 x float> undef, <8 x i32> zeroinitializer\n",
      "  %j_load507_to_float = sitofp <8 x i32> %iter_val491 to <8 x float>\n",
      "  %mul_j_load507_to_float_dy_load508_broadcast = fmul <8 x float> %dy_load_broadcast, %j_load507_to_float\n",
      "  %add_y0_load506_broadcast_mul_j_load507_to_float_dy_load508_broadcast = fadd <8 x float> %y0_load_broadcast, %mul_j_load507_to_float_dy_load508_broadcast\n",
      "  br label %for_test516.outer\n",
      "\n",
      "for_test516.outer:                                ; preds = %if_done538, %partial_inner_only485\n",
      "  %blend.i.i737877.ph = phi <8 x float> [ %blend.i.i737878, %if_done538 ], [ %blend.i.i737876.ph, %partial_inner_only485 ]\n",
      "  %blend.i.i740874.ph = phi <8 x float> [ %blend.i.i740875, %if_done538 ], [ %blend.i.i740873.ph, %partial_inner_only485 ]\n",
      "  %final.i872.ph = phi <8 x i64> [ %final.i871, %if_done538 ], [ zeroinitializer, %partial_inner_only485 ]\n",
      "  %blend.i.i731870.ph = phi <8 x float> [ %blend.i.i731869, %if_done538 ], [ %add_y0_load506_broadcast_mul_j_load507_to_float_dy_load508_broadcast, %partial_inner_only485 ]\n",
      "  %blend.i.i734868.ph = phi <8 x float> [ %blend.i.i734867, %if_done538 ], [ %add_x0_load502_mul_i_load503_to_float_dx_load504_broadcast, %partial_inner_only485 ]\n",
      "  %internal_mask_memory.10.ph = phi <8 x i32> [ %new_mask592, %if_done538 ], [ %cmp494_to_boolvec, %partial_inner_only485 ]\n",
      "  %less___i_8514_load523_max_iters_load524_broadcast = icmp slt <8 x i64> %final.i872.ph, %max_iters_load_broadcast\n",
      "  %mul___z_re_8512_load533___z_re_8512_load534 = fmul <8 x float> %blend.i.i734868.ph, %blend.i.i734868.ph\n",
      "  %mul___z_im_8513_load535___z_im_8513_load536 = fmul <8 x float> %blend.i.i731870.ph, %blend.i.i731870.ph\n",
      "  %add_mul___z_re_8512_load533___z_re_8512_load534_mul___z_im_8513_load535___z_im_8513_load536 = fadd <8 x float> %mul___z_im_8513_load535___z_im_8513_load536, %mul___z_re_8512_load533___z_re_8512_load534\n",
      "  %less__add_mul___z_re_8512_load533___z_re_8512_load534_mul___z_im_8513_load535___z_im_8513_load536 = fcmp ugt <8 x float> %add_mul___z_re_8512_load533___z_re_8512_load534_mul___z_im_8513_load535___z_im_8513_load536, <float 4.000000e+00, float 4.000000e+00, float 4.000000e+00, float 4.000000e+00, float 4.000000e+00, float 4.000000e+00, float 4.000000e+00, float 4.000000e+00>\n",
      "  br label %for_test516\n",
      "\n",
      "for_test516:                                      ; preds = %safe_if_run_true540, %for_test516.outer\n",
      "  %internal_mask_memory.10 = phi <8 x i32> [ zeroinitializer, %safe_if_run_true540 ], [ %internal_mask_memory.10.ph, %for_test516.outer ]\n",
      "  %\"oldMask&test526\" = select <8 x i1> %less___i_8514_load523_max_iters_load524_broadcast, <8 x i32> %internal_mask_memory.10, <8 x i32> zeroinitializer\n",
      "  %floatmask.i674 = bitcast <8 x i32> %\"oldMask&test526\" to <8 x float>\n",
      "  %v.i675 = tail call i32 @llvm.x86.avx.movmsk.ps.256(<8 x float> %floatmask.i674) #0\n",
      "  %cmp.i676 = icmp eq i32 %v.i675, 0\n",
      "  br i1 %cmp.i676, label %for_exit519, label %for_loop518\n",
      "\n",
      "for_loop518:                                      ; preds = %for_test516\n",
      "  %\"oldMask&test541\" = select <8 x i1> %less__add_mul___z_re_8512_load533___z_re_8512_load534_mul___z_im_8513_load535___z_im_8513_load536, <8 x i32> %\"oldMask&test526\", <8 x i32> zeroinitializer\n",
      "  %floatmask.i671 = bitcast <8 x i32> %\"oldMask&test541\" to <8 x float>\n",
      "  %v.i672 = tail call i32 @llvm.x86.avx.movmsk.ps.256(<8 x float> %floatmask.i671) #0\n",
      "  %cmp.i673 = icmp eq i32 %v.i672, 0\n",
      "  br i1 %cmp.i673, label %safe_if_after_true539, label %safe_if_run_true540\n",
      "\n",
      "for_exit519:                                      ; preds = %for_test516\n",
      "  %sub_i_load609_ = add i64 %_s40285.0, -1\n",
      "  %mul_output__len__1_load608_sub_i_load609_ = mul i64 %sub_i_load609_, %output__len__1\n",
      "  %_gensym5_load611_to_float = sitofp <8 x i64> %final.i872.ph to <8 x float>\n",
      "  %j332.0_cast.elt0 = zext i32 %counter331.1.lcssa to i64\n",
      "  %add_mul_output__len__1_load608_sub_i_load609__broadcast_j332.0_cast.elt0 = add i64 %j332.0_cast.elt0, %mul_output__len__1_load608_sub_i_load609_\n",
      "  %add_mul_output__len__1_load608_sub_i_load609__broadcast_j332.0_cast_cast.elt0 = trunc i64 %add_mul_output__len__1_load608_sub_i_load609__broadcast_j332.0_cast.elt0 to i32\n",
      "  %shl_add_mul_output__len__1_load608_sub_i_load609__broadcast_j332.0_cast_cast_.elt0 = shl i32 %add_mul_output__len__1_load608_sub_i_load609__broadcast_j332.0_cast_cast.elt0, 2\n",
      "  %\"varying+const_offsets.elt0660\" = add i32 %shl_add_mul_output__len__1_load608_sub_i_load609__broadcast_j332.0_cast_cast_.elt0, -4\n",
      "  %6 = sext i32 %\"varying+const_offsets.elt0660\" to i64\n",
      "  %ptr661 = getelementptr i8* %output_load_ptr2int_2void, i64 %6\n",
      "  %mask.i.i = bitcast <8 x i32> %cmp494_to_boolvec to <8 x float>\n",
      "  call void @llvm.x86.avx.maskstore.ps.256(i8* %ptr661, <8 x float> %mask.i.i, <8 x float> %_gensym5_load611_to_float) #1\n",
      "  br label %for_test288.outer\n",
      "\n",
      "for_test288.outer:                                ; preds = %for_exit519, %allocas\n",
      "  %blend.i.i737876.ph = phi <8 x float> [ %blend.i.i737877.ph, %for_exit519 ], [ undef, %allocas ]\n",
      "  %blend.i.i740873.ph = phi <8 x float> [ %blend.i.i740874.ph, %for_exit519 ], [ undef, %allocas ]\n",
      "  %blend.i.i766863.ph = phi <8 x float> [ %blend.i.i766864.lcssa, %for_exit519 ], [ undef, %allocas ]\n",
      "  %blend.i.i769859.ph = phi <8 x float> [ %blend.i.i769860.lcssa, %for_exit519 ], [ undef, %allocas ]\n",
      "  %_s40285.0.ph = phi i64 [ %add__s40_load312_, %for_exit519 ], [ 1, %allocas ]\n",
      "  %internal_mask_memory.6.ph = phi <8 x i32> [ %\"oldMask&test302\", %for_exit519 ], [ <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>, %allocas ]\n",
      "  br label %for_test288\n",
      "\n",
      "if_done538:                                       ; preds = %safe_if_run_false559, %safe_if_after_true539\n",
      "  %blend.i.i737878 = phi <8 x float> [ %blend.i.i737877.ph, %safe_if_after_true539 ], [ %blend.i.i737, %safe_if_run_false559 ]\n",
      "  %blend.i.i740875 = phi <8 x float> [ %blend.i.i740874.ph, %safe_if_after_true539 ], [ %blend.i.i740, %safe_if_run_false559 ]\n",
      "  %final.i871 = phi <8 x i64> [ %final.i872.ph, %safe_if_after_true539 ], [ %final.i, %safe_if_run_false559 ]\n",
      "  %blend.i.i731869 = phi <8 x float> [ %blend.i.i731870.ph, %safe_if_after_true539 ], [ %blend.i.i731, %safe_if_run_false559 ]\n",
      "  %blend.i.i734867 = phi <8 x float> [ %blend.i.i734868.ph, %safe_if_after_true539 ], [ %blend.i.i734, %safe_if_run_false559 ]\n",
      "  %\"!(break|continue)_lanes590\" = xor <8 x i32> %break_lanes_memory522.1, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>\n",
      "  %new_mask592 = and <8 x i32> %\"oldMask&test526\", %\"!(break|continue)_lanes590\"\n",
      "  br label %for_test516.outer\n",
      "\n",
      "safe_if_after_true539:                            ; preds = %safe_if_run_true540, %for_loop518\n",
      "  %break_lanes_memory522.1 = phi <8 x i32> [ %\"oldMask&test541\", %safe_if_run_true540 ], [ zeroinitializer, %for_loop518 ]\n",
      "  %7 = bitcast <8 x i32> %\"oldMask&test526\" to <8 x float>\n",
      "  %floatmask.i668 = select <8 x i1> %less__add_mul___z_re_8512_load533___z_re_8512_load534_mul___z_im_8513_load535___z_im_8513_load536, <8 x float> zeroinitializer, <8 x float> %7\n",
      "  %v.i669 = tail call i32 @llvm.x86.avx.movmsk.ps.256(<8 x float> %floatmask.i668) #0\n",
      "  %cmp.i670 = icmp eq i32 %v.i669, 0\n",
      "  br i1 %cmp.i670, label %if_done538, label %safe_if_run_false559\n",
      "\n",
      "safe_if_run_true540:                              ; preds = %for_loop518\n",
      "  %\"equal_finished&func556_internal_mask&function_mask532\" = icmp eq i32 %v.i672, %v.i675\n",
      "  br i1 %\"equal_finished&func556_internal_mask&function_mask532\", label %for_test516, label %safe_if_after_true539\n",
      "\n",
      "safe_if_run_false559:                             ; preds = %safe_if_after_true539\n",
      "  %sub_mul___z_re_8512_load566___z_re_8512_load567_mul___z_im_8513_load568___z_im_8513_load569 = fsub <8 x float> %mul___z_re_8512_load533___z_re_8512_load534, %mul___z_im_8513_load535___z_im_8513_load536\n",
      "  %blend.i.i740 = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %blend.i.i740874.ph, <8 x float> %sub_mul___z_re_8512_load566___z_re_8512_load567_mul___z_im_8513_load568___z_im_8513_load569, <8 x float> %floatmask.i668) #1\n",
      "  %mul____z_re_8512_load571 = fmul <8 x float> %blend.i.i734868.ph, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>\n",
      "  %mul_mul____z_re_8512_load571___z_im_8513_load572 = fmul <8 x float> %blend.i.i731870.ph, %mul____z_re_8512_load571\n",
      "  %blend.i.i737 = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %blend.i.i737877.ph, <8 x float> %mul_mul____z_re_8512_load571___z_im_8513_load572, <8 x float> %floatmask.i668) #1\n",
      "  %add_x_load574___new_re_8515_load575 = fadd <8 x float> %add_x0_load502_mul_i_load503_to_float_dx_load504_broadcast, %blend.i.i740\n",
      "  %blend.i.i734 = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %blend.i.i734868.ph, <8 x float> %add_x_load574___new_re_8515_load575, <8 x float> %floatmask.i668) #1\n",
      "  %add_y_load577___new_im_8516_load578 = fadd <8 x float> %add_y0_load506_broadcast_mul_j_load507_to_float_dy_load508_broadcast, %blend.i.i737\n",
      "  %blend.i.i731 = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %blend.i.i731870.ph, <8 x float> %add_y_load577___new_im_8516_load578, <8 x float> %floatmask.i668) #1\n",
      "  %add___i_8514_load580_ = add <8 x i64> %final.i872.ph, <i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1>\n",
      "  %old01.i = shufflevector <8 x i64> %final.i872.ph, <8 x i64> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>\n",
      "  %old01f.i = bitcast <4 x i64> %old01.i to <8 x float>\n",
      "  %new01.i = shufflevector <8 x i64> %add___i_8514_load580_, <8 x i64> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>\n",
      "  %new01f.i = bitcast <4 x i64> %new01.i to <8 x float>\n",
      "  %mask01.i = shufflevector <8 x float> %floatmask.i668, <8 x float> undef, <8 x i32> <i32 0, i32 0, i32 1, i32 1, i32 2, i32 2, i32 3, i32 3>\n",
      "  %result01f.i = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %old01f.i, <8 x float> %new01f.i, <8 x float> %mask01.i) #1\n",
      "  %result01.i = bitcast <8 x float> %result01f.i to <4 x i64>\n",
      "  %old23.i = shufflevector <8 x i64> %final.i872.ph, <8 x i64> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>\n",
      "  %old23f.i = bitcast <4 x i64> %old23.i to <8 x float>\n",
      "  %new23.i = shufflevector <8 x i64> %add___i_8514_load580_, <8 x i64> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>\n",
      "  %new23f.i = bitcast <4 x i64> %new23.i to <8 x float>\n",
      "  %mask23.i = shufflevector <8 x float> %floatmask.i668, <8 x float> undef, <8 x i32> <i32 4, i32 4, i32 5, i32 5, i32 6, i32 6, i32 7, i32 7>\n",
      "  %result23f.i = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %old23f.i, <8 x float> %new23f.i, <8 x float> %mask23.i) #1\n",
      "  %result23.i = bitcast <8 x float> %result23f.i to <4 x i64>\n",
      "  %final.i = shufflevector <4 x i64> %result01.i, <4 x i64> %result23.i, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>\n",
      "  br label %if_done538\n",
      "}\n",
      "\n",
      "; Function Attrs: nounwind\n",
      "define void @ispc_func_1(float %x0, float %y0, float* noalias nocapture %output, i64 %output__len__1, i64 %output__len__2, i64 %max_iters, i64 %height, i64 %width, float %dx, float %dy) #1 {\n",
      "allocas:\n",
      "  %lessequal__width_load = icmp sgt i64 %width, 0\n",
      "  %width.op = add i64 %width, 1\n",
      "  %add__gensym318_stop_ = select i1 %lessequal__width_load, i64 %width.op, i64 1\n",
      "  %add_height_load_ = add i64 %height, 1\n",
      "  %add_height_load__to_int32 = trunc i64 %add_height_load_ to i32\n",
      "  %nitems = add i32 %add_height_load__to_int32, -1\n",
      "  %nextras = srem i32 %nitems, 8\n",
      "  %aligned_end = sub i32 %add_height_load__to_int32, %nextras\n",
      "  %before_aligned_end44796 = icmp sgt i32 %aligned_end, 1\n",
      "  %y0_load_broadcast_init = insertelement <8 x float> undef, float %y0, i32 0\n",
      "  %y0_load_broadcast = shufflevector <8 x float> %y0_load_broadcast_init, <8 x float> undef, <8 x i32> zeroinitializer\n",
      "  %dy_load_broadcast_init = insertelement <8 x float> undef, float %dy, i32 0\n",
      "  %dy_load_broadcast = shufflevector <8 x float> %dy_load_broadcast_init, <8 x float> undef, <8 x i32> zeroinitializer\n",
      "  %max_iters_load_broadcast_init = insertelement <8 x i64> undef, i64 %max_iters, i32 0\n",
      "  %max_iters_load_broadcast = shufflevector <8 x i64> %max_iters_load_broadcast_init, <8 x i64> undef, <8 x i32> zeroinitializer\n",
      "  %output_load_ptr2int_2void = bitcast float* %output to i8*\n",
      "  br label %for_test.outer\n",
      "\n",
      "for_test.outer:                                   ; preds = %for_exit156, %allocas\n",
      "  %blend.i.i736789.ph = phi <8 x float> [ %blend.i.i736790.ph, %for_exit156 ], [ undef, %allocas ]\n",
      "  %blend.i.i739786.ph = phi <8 x float> [ %blend.i.i739787.ph, %for_exit156 ], [ undef, %allocas ]\n",
      "  %blend.i.i765776.ph = phi <8 x float> [ %blend.i.i765777.lcssa, %for_exit156 ], [ undef, %allocas ]\n",
      "  %blend.i.i772.ph = phi <8 x float> [ %blend.i.i773.lcssa, %for_exit156 ], [ undef, %allocas ]\n",
      "  %_s40.0.ph = phi i64 [ %add__s40_load30_, %for_exit156 ], [ 1, %allocas ]\n",
      "  %internal_mask_memory.0.ph = phi <8 x i32> [ %\"oldMask&test\", %for_exit156 ], [ <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>, %allocas ]\n",
      "  br label %for_test\n",
      "\n",
      "for_test:                                         ; preds = %partial_inner_all_outer, %for_test.outer\n",
      "  %blend.i.i765776 = phi <8 x float> [ %blend.i.i765777.lcssa, %partial_inner_all_outer ], [ %blend.i.i765776.ph, %for_test.outer ]\n",
      "  %blend.i.i772 = phi <8 x float> [ %blend.i.i773.lcssa, %partial_inner_all_outer ], [ %blend.i.i772.ph, %for_test.outer ]\n",
      "  %_s40.0 = phi i64 [ %add__s40_load30_, %partial_inner_all_outer ], [ %_s40.0.ph, %for_test.outer ]\n",
      "  %internal_mask_memory.0 = phi <8 x i32> [ %\"oldMask&test\", %partial_inner_all_outer ], [ %internal_mask_memory.0.ph, %for_test.outer ]\n",
      "  %equal__s40_load_add__gensym318_stop_ = icmp eq i64 %_s40.0, %add__gensym318_stop_\n",
      "  %equal__s40_load_add__gensym318_stop_to_i_bool = sext i1 %equal__s40_load_add__gensym318_stop_ to i32\n",
      "  %equal__s40_load_add__gensym318_stop_to_i_bool_broadcast_init = insertelement <8 x i32> undef, i32 %equal__s40_load_add__gensym318_stop_to_i_bool, i32 0\n",
      "  %equal__s40_load_add__gensym318_stop_to_i_bool_broadcast = shufflevector <8 x i32> %equal__s40_load_add__gensym318_stop_to_i_bool_broadcast_init, <8 x i32> undef, <8 x i32> zeroinitializer\n",
      "  %val_load_logicalnot.i727 = xor <8 x i32> %equal__s40_load_add__gensym318_stop_to_i_bool_broadcast, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>\n",
      "  %\"oldMask&test\" = and <8 x i32> %internal_mask_memory.0, %val_load_logicalnot.i727\n",
      "  %floatmask.i724 = bitcast <8 x i32> %\"oldMask&test\" to <8 x float>\n",
      "  %v.i725 = tail call i32 @llvm.x86.avx.movmsk.ps.256(<8 x float> %floatmask.i724) #0\n",
      "  %cmp.i726 = icmp eq i32 %v.i725, 0\n",
      "  br i1 %cmp.i726, label %for_exit, label %for_loop\n",
      "\n",
      "for_loop:                                         ; preds = %for_test\n",
      "  %add__s40_load30_ = add i64 %_s40.0, 1\n",
      "  br i1 %before_aligned_end44796, label %foreach_full_body.lr.ph, label %partial_inner_all_outer\n",
      "\n",
      "foreach_full_body.lr.ph:                          ; preds = %for_loop\n",
      "  %i_load_to_float = sitofp i64 %_s40.0 to float\n",
      "  %mul_i_load_to_float_dx_load = fmul float %i_load_to_float, %dx\n",
      "  %add_x0_load_mul_i_load_to_float_dx_load = fadd float %mul_i_load_to_float_dx_load, %x0\n",
      "  %add_x0_load_mul_i_load_to_float_dx_load_broadcast_init = insertelement <8 x float> undef, float %add_x0_load_mul_i_load_to_float_dx_load, i32 0\n",
      "  %add_x0_load_mul_i_load_to_float_dx_load_broadcast = shufflevector <8 x float> %add_x0_load_mul_i_load_to_float_dx_load_broadcast_init, <8 x float> undef, <8 x i32> zeroinitializer\n",
      "  %sub_i_load115_ = add i64 %_s40.0, -1\n",
      "  %mul_output__len__1_load_sub_i_load115_ = mul i64 %sub_i_load115_, %output__len__1\n",
      "  br label %foreach_full_body\n",
      "\n",
      "for_exit:                                         ; preds = %for_test\n",
      "  ret void\n",
      "\n",
      "foreach_full_body:                                ; preds = %for_exit55, %foreach_full_body.lr.ph\n",
      "  %counter.1799 = phi i32 [ 1, %foreach_full_body.lr.ph ], [ %new_counter, %for_exit55 ]\n",
      "  %blend.i.i773798 = phi <8 x float> [ %blend.i.i772, %foreach_full_body.lr.ph ], [ %blend.i.i774.ph, %for_exit55 ]\n",
      "  %blend.i.i765777797 = phi <8 x float> [ %blend.i.i765776, %foreach_full_body.lr.ph ], [ %blend.i.i765778.ph, %for_exit55 ]\n",
      "  %smear_counter_init48 = insertelement <8 x i32> undef, i32 %counter.1799, i32 0\n",
      "  %smear_counter49 = shufflevector <8 x i32> %smear_counter_init48, <8 x i32> undef, <8 x i32> zeroinitializer\n",
      "  %iter_val50 = add <8 x i32> %smear_counter49, <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>\n",
      "  %j_load51_to_float = sitofp <8 x i32> %iter_val50 to <8 x float>\n",
      "  %mul_j_load51_to_float_dy_load_broadcast = fmul <8 x float> %dy_load_broadcast, %j_load51_to_float\n",
      "  %add_y0_load_broadcast_mul_j_load51_to_float_dy_load_broadcast = fadd <8 x float> %y0_load_broadcast, %mul_j_load51_to_float_dy_load_broadcast\n",
      "  br label %for_test52.outer\n",
      "\n",
      "partial_inner_all_outer:                          ; preds = %for_exit55, %for_loop\n",
      "  %counter.1.lcssa = phi i32 [ 1, %for_loop ], [ %new_counter, %for_exit55 ]\n",
      "  %blend.i.i773.lcssa = phi <8 x float> [ %blend.i.i772, %for_loop ], [ %blend.i.i774.ph, %for_exit55 ]\n",
      "  %blend.i.i765777.lcssa = phi <8 x float> [ %blend.i.i765776, %for_loop ], [ %blend.i.i765778.ph, %for_exit55 ]\n",
      "  %before_full_end = icmp slt i32 %counter.1.lcssa, %add_height_load__to_int32\n",
      "  br i1 %before_full_end, label %partial_inner_only, label %for_test\n",
      "\n",
      "for_test52:                                       ; preds = %safe_if_run_true, %for_test52.outer\n",
      "  %internal_mask_memory.2 = phi <8 x i32> [ zeroinitializer, %safe_if_run_true ], [ %internal_mask_memory.2.ph, %for_test52.outer ]\n",
      "  %\"oldMask&test60\" = select <8 x i1> %less___i_8514_load_max_iters_load_broadcast, <8 x i32> %internal_mask_memory.2, <8 x i32> zeroinitializer\n",
      "  %floatmask.i721 = bitcast <8 x i32> %\"oldMask&test60\" to <8 x float>\n",
      "  %v.i722 = tail call i32 @llvm.x86.avx.movmsk.ps.256(<8 x float> %floatmask.i721) #0\n",
      "  %cmp.i723 = icmp eq i32 %v.i722, 0\n",
      "  br i1 %cmp.i723, label %for_exit55, label %for_loop54\n",
      "\n",
      "for_loop54:                                       ; preds = %for_test52\n",
      "  %\"oldMask&test70\" = select <8 x i1> %less__add_mul___z_re_8512_load___z_re_8512_load67_mul___z_im_8513_load___z_im_8513_load68, <8 x i32> %\"oldMask&test60\", <8 x i32> zeroinitializer\n",
      "  %floatmask.i718 = bitcast <8 x i32> %\"oldMask&test70\" to <8 x float>\n",
      "  %v.i719 = tail call i32 @llvm.x86.avx.movmsk.ps.256(<8 x float> %floatmask.i718) #0\n",
      "  %cmp.i720 = icmp eq i32 %v.i719, 0\n",
      "  br i1 %cmp.i720, label %safe_if_after_true, label %safe_if_run_true\n",
      "\n",
      "for_exit55:                                       ; preds = %for_test52\n",
      "  %_gensym5_load_to_float = sitofp <8 x i64> %final.i756771.ph to <8 x float>\n",
      "  %smear_counter49_cast.elt0 = zext i32 %counter.1799 to i64\n",
      "  %add_mul_output__len__1_load_sub_i_load115__broadcast_smear_counter49_cast.elt0 = add i64 %smear_counter49_cast.elt0, %mul_out"
     ]
    },
    {
     "data": {
      "text/plain": [
       "2328"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "put__len__1_load_sub_i_load115_\n",
      "  %add_mul_output__len__1_load_sub_i_load115__broadcast_smear_counter49_cast_cast.elt0 = trunc i64 %add_mul_output__len__1_load_sub_i_load115__broadcast_smear_counter49_cast.elt0 to i32\n",
      "  %shl_add_mul_output__len__1_load_sub_i_load115__broadcast_smear_counter49_cast_cast_.elt0 = shl i32 %add_mul_output__len__1_load_sub_i_load115__broadcast_smear_counter49_cast_cast.elt0, 2\n",
      "  %\"varying+const_offsets.elt0\" = add i32 %shl_add_mul_output__len__1_load_sub_i_load115__broadcast_smear_counter49_cast_cast_.elt0, -4\n",
      "  %0 = sext i32 %\"varying+const_offsets.elt0\" to i64\n",
      "  %ptr = getelementptr i8* %output_load_ptr2int_2void, i64 %0, !filename !2, !first_line !3, !first_column !4, !last_line !3, !last_column !5\n",
      "  %ptrcast = bitcast i8* %ptr to <8 x float>*\n",
      "  store <8 x float> %_gensym5_load_to_float, <8 x float>* %ptrcast, align 4, !filename !2, !first_line !3, !first_column !4, !last_line !3, !last_column !5\n",
      "  %new_counter = add i32 %counter.1799, 8\n",
      "  %before_aligned_end44 = icmp slt i32 %new_counter, %aligned_end\n",
      "  br i1 %before_aligned_end44, label %foreach_full_body, label %partial_inner_all_outer\n",
      "\n",
      "if_done:                                          ; preds = %safe_if_run_false, %safe_if_after_true\n",
      "  %blend.i.i765779 = phi <8 x float> [ %blend.i.i765778.ph, %safe_if_after_true ], [ %blend.i.i765, %safe_if_run_false ]\n",
      "  %blend.i.i775 = phi <8 x float> [ %blend.i.i774.ph, %safe_if_after_true ], [ %blend.i.i, %safe_if_run_false ]\n",
      "  %final.i756770 = phi <8 x i64> [ %final.i756771.ph, %safe_if_after_true ], [ %final.i756, %safe_if_run_false ]\n",
      "  %blend.i.i759768 = phi <8 x float> [ %blend.i.i759769.ph, %safe_if_after_true ], [ %blend.i.i759, %safe_if_run_false ]\n",
      "  %blend.i.i762766 = phi <8 x float> [ %blend.i.i762767.ph, %safe_if_after_true ], [ %blend.i.i762, %safe_if_run_false ]\n",
      "  %\"!(break|continue)_lanes\" = xor <8 x i32> %break_lanes_memory58.1, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>\n",
      "  %new_mask102 = and <8 x i32> %\"oldMask&test60\", %\"!(break|continue)_lanes\"\n",
      "  br label %for_test52.outer\n",
      "\n",
      "for_test52.outer:                                 ; preds = %if_done, %foreach_full_body\n",
      "  %blend.i.i765778.ph = phi <8 x float> [ %blend.i.i765779, %if_done ], [ %blend.i.i765777797, %foreach_full_body ]\n",
      "  %blend.i.i774.ph = phi <8 x float> [ %blend.i.i775, %if_done ], [ %blend.i.i773798, %foreach_full_body ]\n",
      "  %final.i756771.ph = phi <8 x i64> [ %final.i756770, %if_done ], [ zeroinitializer, %foreach_full_body ]\n",
      "  %blend.i.i759769.ph = phi <8 x float> [ %blend.i.i759768, %if_done ], [ %add_y0_load_broadcast_mul_j_load51_to_float_dy_load_broadcast, %foreach_full_body ]\n",
      "  %blend.i.i762767.ph = phi <8 x float> [ %blend.i.i762766, %if_done ], [ %add_x0_load_mul_i_load_to_float_dx_load_broadcast, %foreach_full_body ]\n",
      "  %internal_mask_memory.2.ph = phi <8 x i32> [ %new_mask102, %if_done ], [ <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>, %foreach_full_body ]\n",
      "  %less___i_8514_load_max_iters_load_broadcast = icmp slt <8 x i64> %final.i756771.ph, %max_iters_load_broadcast\n",
      "  %mul___z_re_8512_load___z_re_8512_load67 = fmul <8 x float> %blend.i.i762767.ph, %blend.i.i762767.ph\n",
      "  %mul___z_im_8513_load___z_im_8513_load68 = fmul <8 x float> %blend.i.i759769.ph, %blend.i.i759769.ph\n",
      "  %add_mul___z_re_8512_load___z_re_8512_load67_mul___z_im_8513_load___z_im_8513_load68 = fadd <8 x float> %mul___z_im_8513_load___z_im_8513_load68, %mul___z_re_8512_load___z_re_8512_load67\n",
      "  %less__add_mul___z_re_8512_load___z_re_8512_load67_mul___z_im_8513_load___z_im_8513_load68 = fcmp ugt <8 x float> %add_mul___z_re_8512_load___z_re_8512_load67_mul___z_im_8513_load___z_im_8513_load68, <float 4.000000e+00, float 4.000000e+00, float 4.000000e+00, float 4.000000e+00, float 4.000000e+00, float 4.000000e+00, float 4.000000e+00, float 4.000000e+00>\n",
      "  br label %for_test52\n",
      "\n",
      "safe_if_after_true:                               ; preds = %safe_if_run_true, %for_loop54\n",
      "  %break_lanes_memory58.1 = phi <8 x i32> [ %\"oldMask&test70\", %safe_if_run_true ], [ zeroinitializer, %for_loop54 ]\n",
      "  %1 = bitcast <8 x i32> %\"oldMask&test60\" to <8 x float>\n",
      "  %floatmask.i715 = select <8 x i1> %less__add_mul___z_re_8512_load___z_re_8512_load67_mul___z_im_8513_load___z_im_8513_load68, <8 x float> zeroinitializer, <8 x float> %1\n",
      "  %v.i716 = tail call i32 @llvm.x86.avx.movmsk.ps.256(<8 x float> %floatmask.i715) #0\n",
      "  %cmp.i717 = icmp eq i32 %v.i716, 0\n",
      "  br i1 %cmp.i717, label %if_done, label %safe_if_run_false\n",
      "\n",
      "safe_if_run_true:                                 ; preds = %for_loop54\n",
      "  %\"equal_finished&func_internal_mask&function_mask66\" = icmp eq i32 %v.i719, %v.i722\n",
      "  br i1 %\"equal_finished&func_internal_mask&function_mask66\", label %for_test52, label %safe_if_after_true\n",
      "\n",
      "safe_if_run_false:                                ; preds = %safe_if_after_true\n",
      "  %sub_mul___z_re_8512_load82___z_re_8512_load83_mul___z_im_8513_load84___z_im_8513_load85 = fsub <8 x float> %mul___z_re_8512_load___z_re_8512_load67, %mul___z_im_8513_load___z_im_8513_load68\n",
      "  %blend.i.i = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %blend.i.i774.ph, <8 x float> %sub_mul___z_re_8512_load82___z_re_8512_load83_mul___z_im_8513_load84___z_im_8513_load85, <8 x float> %floatmask.i715) #1\n",
      "  %mul____z_re_8512_load87 = fmul <8 x float> %blend.i.i762767.ph, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>\n",
      "  %mul_mul____z_re_8512_load87___z_im_8513_load88 = fmul <8 x float> %blend.i.i759769.ph, %mul____z_re_8512_load87\n",
      "  %blend.i.i765 = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %blend.i.i765778.ph, <8 x float> %mul_mul____z_re_8512_load87___z_im_8513_load88, <8 x float> %floatmask.i715) #1\n",
      "  %add_x_load90___new_re_8515_load = fadd <8 x float> %add_x0_load_mul_i_load_to_float_dx_load_broadcast, %blend.i.i\n",
      "  %blend.i.i762 = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %blend.i.i762767.ph, <8 x float> %add_x_load90___new_re_8515_load, <8 x float> %floatmask.i715) #1\n",
      "  %add_y_load92___new_im_8516_load = fadd <8 x float> %add_y0_load_broadcast_mul_j_load51_to_float_dy_load_broadcast, %blend.i.i765\n",
      "  %blend.i.i759 = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %blend.i.i759769.ph, <8 x float> %add_y_load92___new_im_8516_load, <8 x float> %floatmask.i715) #1\n",
      "  %add___i_8514_load94_ = add <8 x i64> %final.i756771.ph, <i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1>\n",
      "  %old01.i742 = shufflevector <8 x i64> %final.i756771.ph, <8 x i64> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>\n",
      "  %old01f.i743 = bitcast <4 x i64> %old01.i742 to <8 x float>\n",
      "  %new01.i744 = shufflevector <8 x i64> %add___i_8514_load94_, <8 x i64> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>\n",
      "  %new01f.i745 = bitcast <4 x i64> %new01.i744 to <8 x float>\n",
      "  %mask01.i746 = shufflevector <8 x float> %floatmask.i715, <8 x float> undef, <8 x i32> <i32 0, i32 0, i32 1, i32 1, i32 2, i32 2, i32 3, i32 3>\n",
      "  %result01f.i747 = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %old01f.i743, <8 x float> %new01f.i745, <8 x float> %mask01.i746) #1\n",
      "  %result01.i748 = bitcast <8 x float> %result01f.i747 to <4 x i64>\n",
      "  %old23.i749 = shufflevector <8 x i64> %final.i756771.ph, <8 x i64> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>\n",
      "  %old23f.i750 = bitcast <4 x i64> %old23.i749 to <8 x float>\n",
      "  %new23.i751 = shufflevector <8 x i64> %add___i_8514_load94_, <8 x i64> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>\n",
      "  %new23f.i752 = bitcast <4 x i64> %new23.i751 to <8 x float>\n",
      "  %mask23.i753 = shufflevector <8 x float> %floatmask.i715, <8 x float> undef, <8 x i32> <i32 4, i32 4, i32 5, i32 5, i32 6, i32 6, i32 7, i32 7>\n",
      "  %result23f.i754 = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %old23f.i750, <8 x float> %new23f.i752, <8 x float> %mask23.i753) #1\n",
      "  %result23.i755 = bitcast <8 x float> %result23f.i754 to <4 x i64>\n",
      "  %final.i756 = shufflevector <4 x i64> %result01.i748, <4 x i64> %result23.i755, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>\n",
      "  br label %if_done\n",
      "\n",
      "partial_inner_only:                               ; preds = %partial_inner_all_outer\n",
      "  %smear_counter_init128 = insertelement <8 x i32> undef, i32 %counter.1.lcssa, i32 0\n",
      "  %smear_counter129 = shufflevector <8 x i32> %smear_counter_init128, <8 x i32> undef, <8 x i32> zeroinitializer\n",
      "  %iter_val130 = add <8 x i32> %smear_counter129, <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>\n",
      "  %smear_end_init131 = insertelement <8 x i32> undef, i32 %add_height_load__to_int32, i32 0\n",
      "  %smear_end132 = shufflevector <8 x i32> %smear_end_init131, <8 x i32> undef, <8 x i32> zeroinitializer\n",
      "  %cmp133 = icmp slt <8 x i32> %iter_val130, %smear_end132\n",
      "  %cmp133_to_boolvec = sext <8 x i1> %cmp133 to <8 x i32>\n",
      "  %i_load140_to_float = sitofp i64 %_s40.0 to float\n",
      "  %mul_i_load140_to_float_dx_load141 = fmul float %i_load140_to_float, %dx\n",
      "  %add_x0_load139_mul_i_load140_to_float_dx_load141 = fadd float %mul_i_load140_to_float_dx_load141, %x0\n",
      "  %add_x0_load139_mul_i_load140_to_float_dx_load141_broadcast_init = insertelement <8 x float> undef, float %add_x0_load139_mul_i_load140_to_float_dx_load141, i32 0\n",
      "  %add_x0_load139_mul_i_load140_to_float_dx_load141_broadcast = shufflevector <8 x float> %add_x0_load139_mul_i_load140_to_float_dx_load141_broadcast_init, <8 x float> undef, <8 x i32> zeroinitializer\n",
      "  %j_load144_to_float = sitofp <8 x i32> %iter_val130 to <8 x float>\n",
      "  %mul_j_load144_to_float_dy_load145_broadcast = fmul <8 x float> %dy_load_broadcast, %j_load144_to_float\n",
      "  %add_y0_load143_broadcast_mul_j_load144_to_float_dy_load145_broadcast = fadd <8 x float> %y0_load_broadcast, %mul_j_load144_to_float_dy_load145_broadcast\n",
      "  br label %for_test153.outer\n",
      "\n",
      "for_test153.outer:                                ; preds = %if_done175, %partial_inner_only\n",
      "  %blend.i.i736790.ph = phi <8 x float> [ %blend.i.i736791, %if_done175 ], [ %blend.i.i736789.ph, %partial_inner_only ]\n",
      "  %blend.i.i739787.ph = phi <8 x float> [ %blend.i.i739788, %if_done175 ], [ %blend.i.i739786.ph, %partial_inner_only ]\n",
      "  %final.i785.ph = phi <8 x i64> [ %final.i784, %if_done175 ], [ zeroinitializer, %partial_inner_only ]\n",
      "  %blend.i.i730783.ph = phi <8 x float> [ %blend.i.i730782, %if_done175 ], [ %add_y0_load143_broadcast_mul_j_load144_to_float_dy_load145_broadcast, %partial_inner_only ]\n",
      "  %blend.i.i733781.ph = phi <8 x float> [ %blend.i.i733780, %if_done175 ], [ %add_x0_load139_mul_i_load140_to_float_dx_load141_broadcast, %partial_inner_only ]\n",
      "  %internal_mask_memory.4.ph = phi <8 x i32> [ %new_mask229, %if_done175 ], [ %cmp133_to_boolvec, %partial_inner_only ]\n",
      "  %less___i_8514_load160_max_iters_load161_broadcast = icmp slt <8 x i64> %final.i785.ph, %max_iters_load_broadcast\n",
      "  %mul___z_re_8512_load170___z_re_8512_load171 = fmul <8 x float> %blend.i.i733781.ph, %blend.i.i733781.ph\n",
      "  %mul___z_im_8513_load172___z_im_8513_load173 = fmul <8 x float> %blend.i.i730783.ph, %blend.i.i730783.ph\n",
      "  %add_mul___z_re_8512_load170___z_re_8512_load171_mul___z_im_8513_load172___z_im_8513_load173 = fadd <8 x float> %mul___z_im_8513_load172___z_im_8513_load173, %mul___z_re_8512_load170___z_re_8512_load171\n",
      "  %less__add_mul___z_re_8512_load170___z_re_8512_load171_mul___z_im_8513_load172___z_im_8513_load173 = fcmp ugt <8 x float> %add_mul___z_re_8512_load170___z_re_8512_load171_mul___z_im_8513_load172___z_im_8513_load173, <float 4.000000e+00, float 4.000000e+00, float 4.000000e+00, float 4.000000e+00, float 4.000000e+00, float 4.000000e+00, float 4.000000e+00, float 4.000000e+00>\n",
      "  br label %for_test153\n",
      "\n",
      "for_test153:                                      ; preds = %safe_if_run_true177, %for_test153.outer\n",
      "  %internal_mask_memory.4 = phi <8 x i32> [ zeroinitializer, %safe_if_run_true177 ], [ %internal_mask_memory.4.ph, %for_test153.outer ]\n",
      "  %\"oldMask&test163\" = select <8 x i1> %less___i_8514_load160_max_iters_load161_broadcast, <8 x i32> %internal_mask_memory.4, <8 x i32> zeroinitializer\n",
      "  %floatmask.i706 = bitcast <8 x i32> %\"oldMask&test163\" to <8 x float>\n",
      "  %v.i707 = tail call i32 @llvm.x86.avx.movmsk.ps.256(<8 x float> %floatmask.i706) #0\n",
      "  %cmp.i708 = icmp eq i32 %v.i707, 0\n",
      "  br i1 %cmp.i708, label %for_exit156, label %for_loop155\n",
      "\n",
      "for_loop155:                                      ; preds = %for_test153\n",
      "  %\"oldMask&test178\" = select <8 x i1> %less__add_mul___z_re_8512_load170___z_re_8512_load171_mul___z_im_8513_load172___z_im_8513_load173, <8 x i32> %\"oldMask&test163\", <8 x i32> zeroinitializer\n",
      "  %floatmask.i703 = bitcast <8 x i32> %\"oldMask&test178\" to <8 x float>\n",
      "  %v.i704 = tail call i32 @llvm.x86.avx.movmsk.ps.256(<8 x float> %floatmask.i703) #0\n",
      "  %cmp.i705 = icmp eq i32 %v.i704, 0\n",
      "  br i1 %cmp.i705, label %safe_if_after_true176, label %safe_if_run_true177\n",
      "\n",
      "for_exit156:                                      ; preds = %for_test153\n",
      "  %sub_i_load246_ = add i64 %_s40.0, -1\n",
      "  %mul_output__len__1_load245_sub_i_load246_ = mul i64 %sub_i_load246_, %output__len__1\n",
      "  %_gensym5_load248_to_float = sitofp <8 x i64> %final.i785.ph to <8 x float>\n",
      "  %j.0_cast.elt0 = zext i32 %counter.1.lcssa to i64\n",
      "  %add_mul_output__len__1_load245_sub_i_load246__broadcast_j.0_cast.elt0 = add i64 %j.0_cast.elt0, %mul_output__len__1_load245_sub_i_load246_\n",
      "  %add_mul_output__len__1_load245_sub_i_load246__broadcast_j.0_cast_cast.elt0 = trunc i64 %add_mul_output__len__1_load245_sub_i_load246__broadcast_j.0_cast.elt0 to i32\n",
      "  %shl_add_mul_output__len__1_load245_sub_i_load246__broadcast_j.0_cast_cast_.elt0 = shl i32 %add_mul_output__len__1_load245_sub_i_load246__broadcast_j.0_cast_cast.elt0, 2\n",
      "  %\"varying+const_offsets.elt0646\" = add i32 %shl_add_mul_output__len__1_load245_sub_i_load246__broadcast_j.0_cast_cast_.elt0, -4\n",
      "  %2 = sext i32 %\"varying+const_offsets.elt0646\" to i64\n",
      "  %ptr647 = getelementptr i8* %output_load_ptr2int_2void, i64 %2\n",
      "  %mask.i.i = bitcast <8 x i32> %cmp133_to_boolvec to <8 x float>\n",
      "  call void @llvm.x86.avx.maskstore.ps.256(i8* %ptr647, <8 x float> %mask.i.i, <8 x float> %_gensym5_load248_to_float) #1\n",
      "  br label %for_test.outer\n",
      "\n",
      "if_done175:                                       ; preds = %safe_if_run_false196, %safe_if_after_true176\n",
      "  %blend.i.i736791 = phi <8 x float> [ %blend.i.i736790.ph, %safe_if_after_true176 ], [ %blend.i.i736, %safe_if_run_false196 ]\n",
      "  %blend.i.i739788 = phi <8 x float> [ %blend.i.i739787.ph, %safe_if_after_true176 ], [ %blend.i.i739, %safe_if_run_false196 ]\n",
      "  %final.i784 = phi <8 x i64> [ %final.i785.ph, %safe_if_after_true176 ], [ %final.i, %safe_if_run_false196 ]\n",
      "  %blend.i.i730782 = phi <8 x float> [ %blend.i.i730783.ph, %safe_if_after_true176 ], [ %blend.i.i730, %safe_if_run_false196 ]\n",
      "  %blend.i.i733780 = phi <8 x float> [ %blend.i.i733781.ph, %safe_if_after_true176 ], [ %blend.i.i733, %safe_if_run_false196 ]\n",
      "  %\"!(break|continue)_lanes227\" = xor <8 x i32> %break_lanes_memory159.1, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>\n",
      "  %new_mask229 = and <8 x i32> %\"oldMask&test163\", %\"!(break|continue)_lanes227\"\n",
      "  br label %for_test153.outer\n",
      "\n",
      "safe_if_after_true176:                            ; preds = %safe_if_run_true177, %for_loop155\n",
      "  %break_lanes_memory159.1 = phi <8 x i32> [ %\"oldMask&test178\", %safe_if_run_true177 ], [ zeroinitializer, %for_loop155 ]\n",
      "  %3 = bitcast <8 x i32> %\"oldMask&test163\" to <8 x float>\n",
      "  %floatmask.i700 = select <8 x i1> %less__add_mul___z_re_8512_load170___z_re_8512_load171_mul___z_im_8513_load172___z_im_8513_load173, <8 x float> zeroinitializer, <8 x float> %3\n",
      "  %v.i701 = tail call i32 @llvm.x86.avx.movmsk.ps.256(<8 x float> %floatmask.i700) #0\n",
      "  %cmp.i702 = icmp eq i32 %v.i701, 0\n",
      "  br i1 %cmp.i702, label %if_done175, label %safe_if_run_false196\n",
      "\n",
      "safe_if_run_true177:                              ; preds = %for_loop155\n",
      "  %\"equal_finished&func193_internal_mask&function_mask169\" = icmp eq i32 %v.i704, %v.i707\n",
      "  br i1 %\"equal_finished&func193_internal_mask&function_mask169\", label %for_test153, label %safe_if_after_true176\n",
      "\n",
      "safe_if_run_false196:                             ; preds = %safe_if_after_true176\n",
      "  %sub_mul___z_re_8512_load203___z_re_8512_load204_mul___z_im_8513_load205___z_im_8513_load206 = fsub <8 x float> %mul___z_re_8512_load170___z_re_8512_load171, %mul___z_im_8513_load172___z_im_8513_load173\n",
      "  %blend.i.i739 = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %blend.i.i739787.ph, <8 x float> %sub_mul___z_re_8512_load203___z_re_8512_load204_mul___z_im_8513_load205___z_im_8513_load206, <8 x float> %floatmask.i700) #1\n",
      "  %mul____z_re_8512_load208 = fmul <8 x float> %blend.i.i733781.ph, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>\n",
      "  %mul_mul____z_re_8512_load208___z_im_8513_load209 = fmul <8 x float> %blend.i.i730783.ph, %mul____z_re_8512_load208\n",
      "  %blend.i.i736 = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %blend.i.i736790.ph, <8 x float> %mul_mul____z_re_8512_load208___z_im_8513_load209, <8 x float> %floatmask.i700) #1\n",
      "  %add_x_load211___new_re_8515_load212 = fadd <8 x float> %add_x0_load139_mul_i_load140_to_float_dx_load141_broadcast, %blend.i.i739\n",
      "  %blend.i.i733 = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %blend.i.i733781.ph, <8 x float> %add_x_load211___new_re_8515_load212, <8 x float> %floatmask.i700) #1\n",
      "  %add_y_load214___new_im_8516_load215 = fadd <8 x float> %add_y0_load143_broadcast_mul_j_load144_to_float_dy_load145_broadcast, %blend.i.i736\n",
      "  %blend.i.i730 = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %blend.i.i730783.ph, <8 x float> %add_y_load214___new_im_8516_load215, <8 x float> %floatmask.i700) #1\n",
      "  %add___i_8514_load217_ = add <8 x i64> %final.i785.ph, <i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1>\n",
      "  %old01.i = shufflevector <8 x i64> %final.i785.ph, <8 x i64> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>\n",
      "  %old01f.i = bitcast <4 x i64> %old01.i to <8 x float>\n",
      "  %new01.i = shufflevector <8 x i64> %add___i_8514_load217_, <8 x i64> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>\n",
      "  %new01f.i = bitcast <4 x i64> %new01.i to <8 x float>\n",
      "  %mask01.i = shufflevector <8 x float> %floatmask.i700, <8 x float> undef, <8 x i32> <i32 0, i32 0, i32 1, i32 1, i32 2, i32 2, i32 3, i32 3>\n",
      "  %result01f.i = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %old01f.i, <8 x float> %new01f.i, <8 x float> %mask01.i) #1\n",
      "  %result01.i = bitcast <8 x float> %result01f.i to <4 x i64>\n",
      "  %old23.i = shufflevector <8 x i64> %final.i785.ph, <8 x i64> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>\n",
      "  %old23f.i = bitcast <4 x i64> %old23.i to <8 x float>\n",
      "  %new23.i = shufflevector <8 x i64> %add___i_8514_load217_, <8 x i64> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>\n",
      "  %new23f.i = bitcast <4 x i64> %new23.i to <8 x float>\n",
      "  %mask23.i = shufflevector <8 x float> %floatmask.i700, <8 x float> undef, <8 x i32> <i32 4, i32 4, i32 5, i32 5, i32 6, i32 6, i32 7, i32 7>\n",
      "  %result23f.i = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %old23f.i, <8 x float> %new23f.i, <8 x float> %mask23.i) #1\n",
      "  %result23.i = bitcast <8 x float> %result23f.i to <4 x i64>\n",
      "  %final.i = shufflevector <4 x i64> %result01.i, <4 x i64> %result23.i, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>\n",
      "  br label %if_done175\n",
      "}\n",
      "\n",
      "attributes #0 = { nounwind readnone }\n",
      "attributes #1 = { nounwind }\n",
      "\n",
      "!llvm.ident = !{!0}\n",
      "!llvm.module.flags = !{!1}\n",
      "\n",
      "!0 = !{!\"clang version 3.6.1 (tags/RELEASE_361/final 238309)\"}\n",
      "!1 = !{i32 1, !\"PIC Level\", i32 2}\n",
      "!2 = !{!\"<stdin>\"}\n",
      "!3 = !{i32 47}\n",
      "!4 = !{i32 13}\n",
      "!5 = !{i32 59}\n"
     ]
    }
   ],
   "source": [
    "ISPC.ispc_llvm(func_code, func.file.compile_opts)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "hide_input": false,
  "kernelspec": {
   "display_name": "Julia 0.5.0-dev",
   "language": "julia",
   "name": "julia-0.5"
  },
  "language_info": {
   "file_extension": ".jl",
   "mimetype": "application/julia",
   "name": "julia",
   "version": "0.5.0"
  },
  "latex_envs": {
   "bibliofile": "biblio.bib",
   "cite_by": "apalike",
   "current_citInitial": 1,
   "eqLabelWithNumbers": true,
   "eqNumInitial": 0
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
